From 37671b828af3b16b86cb7d5c7df12a4a7f584f48 Mon Sep 17 00:00:00 2001 From: Michael Wetherell Date: Thu, 26 Oct 2006 22:49:53 +0000 Subject: [PATCH] Add wxFilterFSHandler. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42479 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- Makefile.in | 19 ++++++++ build/bakefiles/files.bkl | 2 + build/msw/makefile.bcc | 16 +++++++ build/msw/makefile.gcc | 16 +++++++ build/msw/makefile.vc | 16 +++++++ build/msw/makefile.wat | 16 +++++++ build/msw/wx_base.dsp | 8 ++++ docs/changes.txt | 1 + include/wx/fs_filter.h | 41 +++++++++++++++++ src/common/fs_filter.cpp | 92 +++++++++++++++++++++++++++++++++++++++ src/wxWindows.dsp | 8 ++++ wxGTK.spec | 1 + wxMotif.spec | 1 + wxX11.spec | 1 + 14 files changed, 238 insertions(+) create mode 100644 include/wx/fs_filter.h create mode 100644 src/common/fs_filter.cpp diff --git a/Makefile.in b/Makefile.in index 0a1823d033..731624d544 100644 --- a/Makefile.in +++ b/Makefile.in @@ -259,6 +259,7 @@ ALL_BASE_HEADERS = \ wx/filesys.h \ wx/fontenc.h \ wx/fontmap.h \ + wx/fs_filter.h \ wx/fs_mem.h \ wx/fs_zip.h \ wx/hash.h \ @@ -391,6 +392,7 @@ ALL_PORTS_BASE_HEADERS = \ wx/filesys.h \ wx/fontenc.h \ wx/fontmap.h \ + wx/fs_filter.h \ wx/fs_mem.h \ wx/fs_zip.h \ wx/hash.h \ @@ -544,6 +546,7 @@ ALL_BASE_SOURCES = \ src/common/filtall.cpp \ src/common/filtfind.cpp \ src/common/fmapbase.cpp \ + src/common/fs_filter.cpp \ src/common/fs_zip.cpp \ src/common/hash.cpp \ src/common/hashmap.cpp \ @@ -695,6 +698,7 @@ MONODLL_OBJECTS = \ monodll_filtall.o \ monodll_filtfind.o \ monodll_fmapbase.o \ + monodll_fs_filter.o \ monodll_fs_zip.o \ monodll_hash.o \ monodll_hashmap.o \ @@ -790,6 +794,7 @@ MONOLIB_OBJECTS = \ monolib_filtall.o \ monolib_filtfind.o \ monolib_fmapbase.o \ + monolib_fs_filter.o \ monolib_fs_zip.o \ monolib_hash.o \ monolib_hashmap.o \ @@ -887,6 +892,7 @@ BASEDLL_OBJECTS = \ basedll_filtall.o \ basedll_filtfind.o \ basedll_fmapbase.o \ + basedll_fs_filter.o \ basedll_fs_zip.o \ basedll_hash.o \ basedll_hashmap.o \ @@ -967,6 +973,7 @@ BASELIB_OBJECTS = \ baselib_filtall.o \ baselib_filtfind.o \ baselib_fmapbase.o \ + baselib_fs_filter.o \ baselib_fs_zip.o \ baselib_hash.o \ baselib_hashmap.o \ @@ -12190,6 +12197,9 @@ monodll_filtfind.o: $(srcdir)/src/common/filtfind.cpp $(MONODLL_ODEP) monodll_fmapbase.o: $(srcdir)/src/common/fmapbase.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fmapbase.cpp +monodll_fs_filter.o: $(srcdir)/src/common/fs_filter.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fs_filter.cpp + monodll_fs_zip.o: $(srcdir)/src/common/fs_zip.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/fs_zip.cpp @@ -16267,6 +16277,9 @@ monolib_filtfind.o: $(srcdir)/src/common/filtfind.cpp $(MONOLIB_ODEP) monolib_fmapbase.o: $(srcdir)/src/common/fmapbase.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fmapbase.cpp +monolib_fs_filter.o: $(srcdir)/src/common/fs_filter.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fs_filter.cpp + monolib_fs_zip.o: $(srcdir)/src/common/fs_zip.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/fs_zip.cpp @@ -20347,6 +20360,9 @@ basedll_filtfind.o: $(srcdir)/src/common/filtfind.cpp $(BASEDLL_ODEP) basedll_fmapbase.o: $(srcdir)/src/common/fmapbase.cpp $(BASEDLL_ODEP) $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fmapbase.cpp +basedll_fs_filter.o: $(srcdir)/src/common/fs_filter.cpp $(BASEDLL_ODEP) + $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fs_filter.cpp + basedll_fs_zip.o: $(srcdir)/src/common/fs_zip.cpp $(BASEDLL_ODEP) $(CXXC) -c -o $@ $(BASEDLL_CXXFLAGS) $(srcdir)/src/common/fs_zip.cpp @@ -20920,6 +20936,9 @@ baselib_filtfind.o: $(srcdir)/src/common/filtfind.cpp $(BASELIB_ODEP) baselib_fmapbase.o: $(srcdir)/src/common/fmapbase.cpp $(BASELIB_ODEP) $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fmapbase.cpp +baselib_fs_filter.o: $(srcdir)/src/common/fs_filter.cpp $(BASELIB_ODEP) + $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fs_filter.cpp + baselib_fs_zip.o: $(srcdir)/src/common/fs_zip.cpp $(BASELIB_ODEP) $(CXXC) -c -o $@ $(BASELIB_CXXFLAGS) $(srcdir)/src/common/fs_zip.cpp diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index dd8ea9eaee..adcc522576 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -312,6 +312,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/common/filtall.cpp src/common/filtfind.cpp src/common/fmapbase.cpp + src/common/fs_filter.cpp src/common/fs_zip.cpp src/common/hash.cpp src/common/hashmap.cpp @@ -397,6 +398,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! wx/filesys.h wx/fontenc.h wx/fontmap.h + wx/fs_filter.h wx/fs_mem.h wx/fs_zip.h wx/hash.h diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc index dce8a825f8..366577f9f3 100644 --- a/build/msw/makefile.bcc +++ b/build/msw/makefile.bcc @@ -226,6 +226,7 @@ MONODLL_OBJECTS = \ $(OBJS)\monodll_filtall.obj \ $(OBJS)\monodll_filtfind.obj \ $(OBJS)\monodll_fmapbase.obj \ + $(OBJS)\monodll_fs_filter.obj \ $(OBJS)\monodll_fs_zip.obj \ $(OBJS)\monodll_hash.obj \ $(OBJS)\monodll_hashmap.obj \ @@ -342,6 +343,7 @@ MONOLIB_OBJECTS = \ $(OBJS)\monolib_filtall.obj \ $(OBJS)\monolib_filtfind.obj \ $(OBJS)\monolib_fmapbase.obj \ + $(OBJS)\monolib_fs_filter.obj \ $(OBJS)\monolib_fs_zip.obj \ $(OBJS)\monolib_hash.obj \ $(OBJS)\monolib_hashmap.obj \ @@ -459,6 +461,7 @@ BASEDLL_OBJECTS = \ $(OBJS)\basedll_filtall.obj \ $(OBJS)\basedll_filtfind.obj \ $(OBJS)\basedll_fmapbase.obj \ + $(OBJS)\basedll_fs_filter.obj \ $(OBJS)\basedll_fs_zip.obj \ $(OBJS)\basedll_hash.obj \ $(OBJS)\basedll_hashmap.obj \ @@ -560,6 +563,7 @@ BASELIB_OBJECTS = \ $(OBJS)\baselib_filtall.obj \ $(OBJS)\baselib_filtfind.obj \ $(OBJS)\baselib_fmapbase.obj \ + $(OBJS)\baselib_fs_filter.obj \ $(OBJS)\baselib_fs_zip.obj \ $(OBJS)\baselib_hash.obj \ $(OBJS)\baselib_hashmap.obj \ @@ -4549,6 +4553,9 @@ $(OBJS)\monodll_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\monodll_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** +$(OBJS)\monodll_fs_filter.obj: ..\..\src\common\fs_filter.cpp + $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** + $(OBJS)\monodll_fs_zip.obj: ..\..\src\common\fs_zip.cpp $(CXX) -q -c -P -o$@ $(MONODLL_CXXFLAGS) $** @@ -6510,6 +6517,9 @@ $(OBJS)\monolib_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\monolib_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** +$(OBJS)\monolib_fs_filter.obj: ..\..\src\common\fs_filter.cpp + $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** + $(OBJS)\monolib_fs_zip.obj: ..\..\src\common\fs_zip.cpp $(CXX) -q -c -P -o$@ $(MONOLIB_CXXFLAGS) $** @@ -8474,6 +8484,9 @@ $(OBJS)\basedll_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\basedll_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $** +$(OBJS)\basedll_fs_filter.obj: ..\..\src\common\fs_filter.cpp + $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $** + $(OBJS)\basedll_fs_zip.obj: ..\..\src\common\fs_zip.cpp $(CXX) -q -c -P -o$@ $(BASEDLL_CXXFLAGS) $** @@ -8729,6 +8742,9 @@ $(OBJS)\baselib_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\baselib_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $** +$(OBJS)\baselib_fs_filter.obj: ..\..\src\common\fs_filter.cpp + $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $** + $(OBJS)\baselib_fs_zip.obj: ..\..\src\common\fs_zip.cpp $(CXX) -q -c -P -o$@ $(BASELIB_CXXFLAGS) $** diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index 95bcb4d2ed..158dbad4c3 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -212,6 +212,7 @@ MONODLL_OBJECTS = \ $(OBJS)\monodll_filtall.o \ $(OBJS)\monodll_filtfind.o \ $(OBJS)\monodll_fmapbase.o \ + $(OBJS)\monodll_fs_filter.o \ $(OBJS)\monodll_fs_zip.o \ $(OBJS)\monodll_hash.o \ $(OBJS)\monodll_hashmap.o \ @@ -328,6 +329,7 @@ MONOLIB_OBJECTS = \ $(OBJS)\monolib_filtall.o \ $(OBJS)\monolib_filtfind.o \ $(OBJS)\monolib_fmapbase.o \ + $(OBJS)\monolib_fs_filter.o \ $(OBJS)\monolib_fs_zip.o \ $(OBJS)\monolib_hash.o \ $(OBJS)\monolib_hashmap.o \ @@ -446,6 +448,7 @@ BASEDLL_OBJECTS = \ $(OBJS)\basedll_filtall.o \ $(OBJS)\basedll_filtfind.o \ $(OBJS)\basedll_fmapbase.o \ + $(OBJS)\basedll_fs_filter.o \ $(OBJS)\basedll_fs_zip.o \ $(OBJS)\basedll_hash.o \ $(OBJS)\basedll_hashmap.o \ @@ -547,6 +550,7 @@ BASELIB_OBJECTS = \ $(OBJS)\baselib_filtall.o \ $(OBJS)\baselib_filtfind.o \ $(OBJS)\baselib_fmapbase.o \ + $(OBJS)\baselib_fs_filter.o \ $(OBJS)\baselib_fs_zip.o \ $(OBJS)\baselib_hash.o \ $(OBJS)\baselib_hashmap.o \ @@ -4666,6 +4670,9 @@ $(OBJS)\monodll_filtfind.o: ../../src/common/filtfind.cpp $(OBJS)\monodll_fmapbase.o: ../../src/common/fmapbase.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\monodll_fs_filter.o: ../../src/common/fs_filter.cpp + $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\monodll_fs_zip.o: ../../src/common/fs_zip.cpp $(CXX) -c -o $@ $(MONODLL_CXXFLAGS) $(CPPDEPS) $< @@ -6727,6 +6734,9 @@ $(OBJS)\monolib_filtfind.o: ../../src/common/filtfind.cpp $(OBJS)\monolib_fmapbase.o: ../../src/common/fmapbase.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\monolib_fs_filter.o: ../../src/common/fs_filter.cpp + $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\monolib_fs_zip.o: ../../src/common/fs_zip.cpp $(CXX) -c -o $@ $(MONOLIB_CXXFLAGS) $(CPPDEPS) $< @@ -8791,6 +8801,9 @@ $(OBJS)\basedll_filtfind.o: ../../src/common/filtfind.cpp $(OBJS)\basedll_fmapbase.o: ../../src/common/fmapbase.cpp $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\basedll_fs_filter.o: ../../src/common/fs_filter.cpp + $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\basedll_fs_zip.o: ../../src/common/fs_zip.cpp $(CXX) -c -o $@ $(BASEDLL_CXXFLAGS) $(CPPDEPS) $< @@ -9046,6 +9059,9 @@ $(OBJS)\baselib_filtfind.o: ../../src/common/filtfind.cpp $(OBJS)\baselib_fmapbase.o: ../../src/common/fmapbase.cpp $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $< +$(OBJS)\baselib_fs_filter.o: ../../src/common/fs_filter.cpp + $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $< + $(OBJS)\baselib_fs_zip.o: ../../src/common/fs_zip.cpp $(CXX) -c -o $@ $(BASELIB_CXXFLAGS) $(CPPDEPS) $< diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index 3fa5e7e400..b1f1cc7eaa 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -227,6 +227,7 @@ MONODLL_OBJECTS = \ $(OBJS)\monodll_filtall.obj \ $(OBJS)\monodll_filtfind.obj \ $(OBJS)\monodll_fmapbase.obj \ + $(OBJS)\monodll_fs_filter.obj \ $(OBJS)\monodll_fs_zip.obj \ $(OBJS)\monodll_hash.obj \ $(OBJS)\monodll_hashmap.obj \ @@ -348,6 +349,7 @@ MONOLIB_OBJECTS = \ $(OBJS)\monolib_filtall.obj \ $(OBJS)\monolib_filtfind.obj \ $(OBJS)\monolib_fmapbase.obj \ + $(OBJS)\monolib_fs_filter.obj \ $(OBJS)\monolib_fs_zip.obj \ $(OBJS)\monolib_hash.obj \ $(OBJS)\monolib_hashmap.obj \ @@ -471,6 +473,7 @@ BASEDLL_OBJECTS = \ $(OBJS)\basedll_filtall.obj \ $(OBJS)\basedll_filtfind.obj \ $(OBJS)\basedll_fmapbase.obj \ + $(OBJS)\basedll_fs_filter.obj \ $(OBJS)\basedll_fs_zip.obj \ $(OBJS)\basedll_hash.obj \ $(OBJS)\basedll_hashmap.obj \ @@ -578,6 +581,7 @@ BASELIB_OBJECTS = \ $(OBJS)\baselib_filtall.obj \ $(OBJS)\baselib_filtfind.obj \ $(OBJS)\baselib_fmapbase.obj \ + $(OBJS)\baselib_fs_filter.obj \ $(OBJS)\baselib_fs_zip.obj \ $(OBJS)\baselib_hash.obj \ $(OBJS)\baselib_hashmap.obj \ @@ -4882,6 +4886,9 @@ $(OBJS)\monodll_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\monodll_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** +$(OBJS)\monodll_fs_filter.obj: ..\..\src\common\fs_filter.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** + $(OBJS)\monodll_fs_zip.obj: ..\..\src\common\fs_zip.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONODLL_CXXFLAGS) $** @@ -6843,6 +6850,9 @@ $(OBJS)\monolib_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\monolib_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** +$(OBJS)\monolib_fs_filter.obj: ..\..\src\common\fs_filter.cpp + $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** + $(OBJS)\monolib_fs_zip.obj: ..\..\src\common\fs_zip.cpp $(CXX) /c /nologo /TP /Fo$@ $(MONOLIB_CXXFLAGS) $** @@ -8807,6 +8817,9 @@ $(OBJS)\basedll_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\basedll_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $** +$(OBJS)\basedll_fs_filter.obj: ..\..\src\common\fs_filter.cpp + $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $** + $(OBJS)\basedll_fs_zip.obj: ..\..\src\common\fs_zip.cpp $(CXX) /c /nologo /TP /Fo$@ $(BASEDLL_CXXFLAGS) $** @@ -9062,6 +9075,9 @@ $(OBJS)\baselib_filtfind.obj: ..\..\src\common\filtfind.cpp $(OBJS)\baselib_fmapbase.obj: ..\..\src\common\fmapbase.cpp $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $** +$(OBJS)\baselib_fs_filter.obj: ..\..\src\common\fs_filter.cpp + $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $** + $(OBJS)\baselib_fs_zip.obj: ..\..\src\common\fs_zip.cpp $(CXX) /c /nologo /TP /Fo$@ $(BASELIB_CXXFLAGS) $** diff --git a/build/msw/makefile.wat b/build/msw/makefile.wat index 80a8b57f80..ab56e062ae 100644 --- a/build/msw/makefile.wat +++ b/build/msw/makefile.wat @@ -2929,6 +2929,7 @@ MONODLL_OBJECTS = & $(OBJS)\monodll_filtall.obj & $(OBJS)\monodll_filtfind.obj & $(OBJS)\monodll_fmapbase.obj & + $(OBJS)\monodll_fs_filter.obj & $(OBJS)\monodll_fs_zip.obj & $(OBJS)\monodll_hash.obj & $(OBJS)\monodll_hashmap.obj & @@ -3045,6 +3046,7 @@ MONOLIB_OBJECTS = & $(OBJS)\monolib_filtall.obj & $(OBJS)\monolib_filtfind.obj & $(OBJS)\monolib_fmapbase.obj & + $(OBJS)\monolib_fs_filter.obj & $(OBJS)\monolib_fs_zip.obj & $(OBJS)\monolib_hash.obj & $(OBJS)\monolib_hashmap.obj & @@ -3163,6 +3165,7 @@ BASEDLL_OBJECTS = & $(OBJS)\basedll_filtall.obj & $(OBJS)\basedll_filtfind.obj & $(OBJS)\basedll_fmapbase.obj & + $(OBJS)\basedll_fs_filter.obj & $(OBJS)\basedll_fs_zip.obj & $(OBJS)\basedll_hash.obj & $(OBJS)\basedll_hashmap.obj & @@ -3265,6 +3268,7 @@ BASELIB_OBJECTS = & $(OBJS)\baselib_filtall.obj & $(OBJS)\baselib_filtfind.obj & $(OBJS)\baselib_fmapbase.obj & + $(OBJS)\baselib_fs_filter.obj & $(OBJS)\baselib_fs_zip.obj & $(OBJS)\baselib_hash.obj & $(OBJS)\baselib_hashmap.obj & @@ -4894,6 +4898,9 @@ $(OBJS)\monodll_filtfind.obj : .AUTODEPEND ..\..\src\common\filtfind.cpp $(OBJS)\monodll_fmapbase.obj : .AUTODEPEND ..\..\src\common\fmapbase.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< +$(OBJS)\monodll_fs_filter.obj : .AUTODEPEND ..\..\src\common\fs_filter.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< + $(OBJS)\monodll_fs_zip.obj : .AUTODEPEND ..\..\src\common\fs_zip.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONODLL_CXXFLAGS) $< @@ -6955,6 +6962,9 @@ $(OBJS)\monolib_filtfind.obj : .AUTODEPEND ..\..\src\common\filtfind.cpp $(OBJS)\monolib_fmapbase.obj : .AUTODEPEND ..\..\src\common\fmapbase.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< +$(OBJS)\monolib_fs_filter.obj : .AUTODEPEND ..\..\src\common\fs_filter.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< + $(OBJS)\monolib_fs_zip.obj : .AUTODEPEND ..\..\src\common\fs_zip.cpp $(CXX) -bt=nt -zq -fo=$^@ $(MONOLIB_CXXFLAGS) $< @@ -9019,6 +9029,9 @@ $(OBJS)\basedll_filtfind.obj : .AUTODEPEND ..\..\src\common\filtfind.cpp $(OBJS)\basedll_fmapbase.obj : .AUTODEPEND ..\..\src\common\fmapbase.cpp $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $< +$(OBJS)\basedll_fs_filter.obj : .AUTODEPEND ..\..\src\common\fs_filter.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $< + $(OBJS)\basedll_fs_zip.obj : .AUTODEPEND ..\..\src\common\fs_zip.cpp $(CXX) -bt=nt -zq -fo=$^@ $(BASEDLL_CXXFLAGS) $< @@ -9274,6 +9287,9 @@ $(OBJS)\baselib_filtfind.obj : .AUTODEPEND ..\..\src\common\filtfind.cpp $(OBJS)\baselib_fmapbase.obj : .AUTODEPEND ..\..\src\common\fmapbase.cpp $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $< +$(OBJS)\baselib_fs_filter.obj : .AUTODEPEND ..\..\src\common\fs_filter.cpp + $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $< + $(OBJS)\baselib_fs_zip.obj : .AUTODEPEND ..\..\src\common\fs_zip.cpp $(CXX) -bt=nt -zq -fo=$^@ $(BASELIB_CXXFLAGS) $< diff --git a/build/msw/wx_base.dsp b/build/msw/wx_base.dsp index 76dd165f70..294e9c0885 100644 --- a/build/msw/wx_base.dsp +++ b/build/msw/wx_base.dsp @@ -559,6 +559,10 @@ SOURCE=..\..\src\common\fmapbase.cpp # End Source File # Begin Source File +SOURCE=..\..\src\common\fs_filter.cpp +# End Source File +# Begin Source File + SOURCE=..\..\src\common\fs_mem.cpp # End Source File # Begin Source File @@ -1539,6 +1543,10 @@ SOURCE=..\..\include\wx\fontmap.h # End Source File # Begin Source File +SOURCE=..\..\include\wx\fs_filter.h +# End Source File +# Begin Source File + SOURCE=..\..\include\wx\fs_mem.h # End Source File # Begin Source File diff --git a/docs/changes.txt b/docs/changes.txt index 744b1f350c..6361f95eff 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -69,6 +69,7 @@ All: - Added wxFFile overload to wxFileName::CreateTemporaryFileName(). - Added wxBackingFile and wxBackedInputStream. - Added GetTempDir() to wxFileName and wxStandardPaths. +- Added wxFilterFSHandler. All (GUI): diff --git a/include/wx/fs_filter.h b/include/wx/fs_filter.h new file mode 100644 index 0000000000..97c9004830 --- /dev/null +++ b/include/wx/fs_filter.h @@ -0,0 +1,41 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: fs_filter.h +// Purpose: Filter file system handler +// Author: Mike Wetherell +// Copyright: (c) 2006 Mike Wetherell +// CVS-ID: $Id$ +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_FS_FILTER_H_ +#define _WX_FS_FILTER_H_ + +#include "wx/defs.h" + +#if wxUSE_FILESYSTEM + +#include "wx/filesys.h" + +//--------------------------------------------------------------------------- +// wxFilterFSHandler +//--------------------------------------------------------------------------- + +class WXDLLIMPEXP_BASE wxFilterFSHandler : public wxFileSystemHandler +{ +public: + wxFilterFSHandler() : wxFileSystemHandler() { } + virtual ~wxFilterFSHandler() { } + + virtual bool CanOpen(const wxString& location); + virtual wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location); + + virtual wxString FindFirst(const wxString& spec, int flags = 0); + virtual wxString FindNext(); + +private: + DECLARE_NO_COPY_CLASS(wxFilterFSHandler) +}; + +#endif // wxUSE_FILESYSTEM + +#endif // _WX_FS_FILTER_H_ diff --git a/src/common/fs_filter.cpp b/src/common/fs_filter.cpp new file mode 100644 index 0000000000..bf466d5af3 --- /dev/null +++ b/src/common/fs_filter.cpp @@ -0,0 +1,92 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: fs_filter.cpp +// Purpose: wxFilter file system handler +// Author: Mike Wetherell +// Copyright: (c) 2006 Mike Wetherell +// CVS-ID: $Id$ +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif + +#if wxUSE_FILESYSTEM + +#include "wx/fs_filter.h" + +#ifndef WXPRECOMP +#endif + +#include "wx/ptr_scpd.h" + +wxDEFINE_SCOPED_PTR_TYPE(wxFSFile) +wxDEFINE_SCOPED_PTR_TYPE(wxInputStream) + +//---------------------------------------------------------------------------- +// wxFilterFSHandler +//---------------------------------------------------------------------------- + +bool wxFilterFSHandler::CanOpen(const wxString& location) +{ + return wxFilterClassFactory::Find(GetProtocol(location)) != NULL; +} + +wxFSFile* wxFilterFSHandler::OpenFile( + wxFileSystem& fs, + const wxString& location) +{ + wxString right = GetRightLocation(location); + if (!right.empty()) + return NULL; + + wxString protocol = GetProtocol(location); + const wxFilterClassFactory *factory = wxFilterClassFactory::Find(protocol); + if (!factory) + return NULL; + + wxString left = GetLeftLocation(location); + wxFSFilePtr leftFile(fs.OpenFile(left)); + if (!leftFile.get()) + return NULL; + + wxInputStreamPtr leftStream(leftFile->DetachStream()); + if (!leftStream.get() || !leftStream->IsOk()) + return NULL; + + wxInputStreamPtr stream(factory->NewStream(leftStream.get())); + + // The way compressed streams are supposed to be served is e.g.: + // Content-type: application/postscript + // Content-encoding: gzip + // So the mime type should be just the mime type of the lhs. However check + // whether the mime type is that of this compression format (e.g. + // application/gzip). If so pop any extension and try GetMimeTypeFromExt, + // e.g. if it were '.ps.gz' pop the '.gz' and try looking up '.ps' + wxString mime = leftFile->GetMimeType(); + if (factory->CanHandle(mime, wxSTREAM_MIMETYPE)) + mime = GetMimeTypeFromExt(factory->PopExtension(left)); + + return new wxFSFile(stream.release(), + left + wxT("#") + protocol + wxT(":") + right, + mime, + GetAnchor(location) +#if wxUSE_DATETIME + , leftFile->GetModificationTime() +#endif // wxUSE_DATETIME + ); +} + +wxString wxFilterFSHandler::FindFirst(const wxString& spec, int flags) +{ + return wxEmptyString; +} + +wxString wxFilterFSHandler::FindNext() +{ + return wxEmptyString; +} + +#endif //wxUSE_FILESYSTEM diff --git a/src/wxWindows.dsp b/src/wxWindows.dsp index f43dd0eba9..2fe0d96cbb 100644 --- a/src/wxWindows.dsp +++ b/src/wxWindows.dsp @@ -583,6 +583,10 @@ SOURCE=.\common\framecmn.cpp # End Source File # Begin Source File +SOURCE=.\common\fs_filter.cpp +# End Source File +# Begin Source File + SOURCE=.\common\fs_inet.cpp # End Source File # Begin Source File @@ -2675,6 +2679,10 @@ SOURCE=..\include\wx\frame.h # End Source File # Begin Source File +SOURCE=..\include\wx\fs_filter.h +# End Source File +# Begin Source File + SOURCE=..\include\wx\fs_inet.h # End Source File # Begin Source File diff --git a/wxGTK.spec b/wxGTK.spec index a7c8d3e975..bdf767ffc1 100644 --- a/wxGTK.spec +++ b/wxGTK.spec @@ -247,6 +247,7 @@ wx/filename.h wx/filesys.h wx/fontenc.h wx/fontmap.h +wx/fs_filter.h wx/fs_mem.h wx/fs_zip.h wx/hash.h diff --git a/wxMotif.spec b/wxMotif.spec index 2cb86786c6..ee57ba2a09 100644 --- a/wxMotif.spec +++ b/wxMotif.spec @@ -150,6 +150,7 @@ wx/filename.h wx/filesys.h wx/fontenc.h wx/fontmap.h +wx/fs_filter.h wx/fs_mem.h wx/fs_zip.h wx/hash.h diff --git a/wxX11.spec b/wxX11.spec index da7d0e934d..78968978ef 100644 --- a/wxX11.spec +++ b/wxX11.spec @@ -175,6 +175,7 @@ wx/filename.h wx/filesys.h wx/fontenc.h wx/fontmap.h +wx/fs_filter.h wx/fs_mem.h wx/fs_zip.h wx/hash.h -- 2.45.2