]> git.saurik.com Git - wxWidgets.git/blame - wxPython/src/filesys.i
Fixed style setting
[wxWidgets.git] / wxPython / src / filesys.i
CommitLineData
c368d904
RD
1/////////////////////////////////////////////////////////////////////////////
2// Name: filesys.i
3// Purpose: SWIG definitions of the wxFileSystem family of classes
4//
f74ff5ef 5// Author: Joerg Baumann and Robin Dunn
c368d904
RD
6//
7// Created: 25-Sept-2000
8// RCS-ID: $Id$
9// Copyright: (c) 2000 by Joerg Baumann
10// Licence: wxWindows license
11/////////////////////////////////////////////////////////////////////////////
12
13%module filesys
14
15%{
16#include "helpers.h"
cbf60e09 17#include "pyistream.h"
c368d904
RD
18#include <wx/filesys.h>
19#include <wx/fs_inet.h>
20#include <wx/fs_mem.h>
21#include <wx/fs_zip.h>
22%}
23
24//----------------------------------------------------------------------
25
26%include typemaps.i
27%include my_typemaps.i
28
29// Import some definitions of other classes, etc.
30%import _defs.i
31%import utils.i
32%import image.i
33%import streams.i
34
35%pragma(python) code = "import wx"
c368d904
RD
36
37//---------------------------------------------------------------------------
38
c368d904 39
9416aa89 40class wxFSFile : public wxObject {
c368d904
RD
41public:
42 wxFSFile(wxInputStream *stream, const wxString& loc,
43 const wxString& mimetype, const wxString& anchor,
44 wxDateTime modif);
45
46 wxInputStream *GetStream();
47 const wxString& GetMimeType();
48 const wxString& GetLocation();
49 const wxString& GetAnchor();
50 wxDateTime GetModificationTime();
51};
52
53
54// clear typemaps
55%typemap(python,in) wxInputStream *stream;
56%typemap(python,out) wxInputStream *;
57
58
59//---------------------------------------------------------------------------
60
61%{
62// wxPyFileSystemHandler will be the Python class wxFileSystemHandler and handling
63// the callback functions
64class wxPyFileSystemHandler : public wxFileSystemHandler {
65public:
66 wxPyFileSystemHandler() : wxFileSystemHandler() {}
67
68 DEC_PYCALLBACK_BOOL_STRING_pure(CanOpen);
69 DEC_PYCALLBACK_FSF_FSSTRING_pure(OpenFile);
70 DEC_PYCALLBACK_STRING_STRINGINT_pure(FindFirst);
71 DEC_PYCALLBACK_STRING__pure(FindNext);
72
73 wxString GetProtocol(const wxString& location) {
74 return wxFileSystemHandler::GetProtocol(location);
75 }
76
77 wxString GetLeftLocation(const wxString& location) {
78 return wxFileSystemHandler::GetLeftLocation(location);
79 }
80
81 wxString GetAnchor(const wxString& location) {
82 return wxFileSystemHandler::GetAnchor(location);
83 }
84
85 wxString GetRightLocation(const wxString& location) {
86 return wxFileSystemHandler::GetRightLocation(location);
87 }
88
e9159fe8 89 wxString GetMimeTypeFromExt(const wxString& location) {
c368d904
RD
90 return wxFileSystemHandler::GetMimeTypeFromExt(location);
91 }
92
93 PYPRIVATE;
94};
95
96
97IMP_PYCALLBACK_BOOL_STRING_pure(wxPyFileSystemHandler, wxFileSystemHandler, CanOpen);
98IMP_PYCALLBACK_FSF_FSSTRING_pure(wxPyFileSystemHandler, wxFileSystemHandler, OpenFile);
99IMP_PYCALLBACK_STRING_STRINGINT_pure(wxPyFileSystemHandler, wxFileSystemHandler, FindFirst);
100IMP_PYCALLBACK_STRING__pure(wxPyFileSystemHandler, wxFileSystemHandler, FindNext);
101%}
102
103
9416aa89
RD
104%name(wxCPPFileSystemHandler)class wxFileSystemHandler : public wxObject {
105 wxFileSystemHandler();
c368d904
RD
106}
107
108%name(wxFileSystemHandler)class wxPyFileSystemHandler : public wxFileSystemHandler {
109public:
110 wxPyFileSystemHandler();
111
0122b7e3
RD
112 void _setCallbackInfo(PyObject* self, PyObject* _class);
113 %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxFileSystemHandler)"
c368d904
RD
114
115 bool CanOpen(const wxString& location);
116 wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);
117 wxString FindFirst(const wxString& spec, int flags = 0);
118 wxString FindNext();
119
120 wxString GetProtocol(const wxString& location);
121 wxString GetLeftLocation(const wxString& location);
122 wxString GetAnchor(const wxString& location);
123 wxString GetRightLocation(const wxString& location) const;
124 wxString GetMimeTypeFromExt(const wxString& location);
125};
126
127//---------------------------------------------------------------------------
128
9416aa89 129class wxFileSystem : public wxObject {
c368d904
RD
130public:
131 wxFileSystem();
132
133 void ChangePathTo(const wxString& location, bool is_dir = FALSE);
134 wxString GetPath();
135
136 wxFSFile* OpenFile(const wxString& location);
137
138 wxString FindFirst(const wxString& spec, int flags = 0);
139 wxString FindNext();
140
141 static void AddHandler(wxFileSystemHandler *handler);
142 static void CleanUpHandlers();
1e4a197e 143
dd116e73
RD
144 // Returns the file URL for a native path
145 static wxString FileNameToURL(const wxString& filename);
1e4a197e 146
dd116e73
RD
147 // Returns the native path for a file URL
148 //static wxFileName URLToFileName(const wxString& url); *** See below
c368d904
RD
149};
150
dd116e73
RD
151
152// Returns the native path for a file URL
153wxString wxFileSystem_URLToFileName(const wxString& url);
154%{
155 wxString wxFileSystem_URLToFileName(const wxString& url) {
156 wxFileName fname = wxFileSystem::URLToFileName(url);
157 return fname.GetFullPath();
158 }
159%}
160
c368d904
RD
161//---------------------------------------------------------------------------
162
163class wxInternetFSHandler : public wxFileSystemHandler {
164public:
165 wxInternetFSHandler();
166 bool CanOpen(const wxString& location);
167 wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);
168};
169
170
171//---------------------------------------------------------------------------
172class wxZipFSHandler : public wxFileSystemHandler {
173public:
174 wxZipFSHandler();
175
176 bool CanOpen(const wxString& location);
177 wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);
178 wxString FindFirst(const wxString& spec, int flags = 0);
179 wxString FindNext();
180};
181
182//---------------------------------------------------------------------------
183
184class wxMemoryFSHandler : public wxFileSystemHandler {
185public:
186 wxMemoryFSHandler();
187
188 // Remove file from memory FS and free occupied memory
189 static void RemoveFile(const wxString& filename);
190
191 bool CanOpen(const wxString& location);
192 wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);
193 wxString FindFirst(const wxString& spec, int flags = 0);
194 virtual wxString FindNext();
195};
196
197
198// getting the overloaded static AddFile method right
199%inline %{
200void __wxMemoryFSHandler_AddFile_wxImage(const wxString& filename,
201 wxImage& image,
202 long type) {
203 wxMemoryFSHandler::AddFile(filename, image, type);
204}
205
206void __wxMemoryFSHandler_AddFile_wxBitmap(const wxString& filename,
207 const wxBitmap& bitmap,
208 long type) {
209 wxMemoryFSHandler::AddFile(filename, bitmap, type);
210}
211
c368d904
RD
212void __wxMemoryFSHandler_AddFile_Data(const wxString& filename,
213 PyObject* data) {
214
215 wxMemoryFSHandler::AddFile(filename,
e9159fe8 216 // TODO: Verify data type
c368d904
RD
217 (void*)PyString_AsString(data),
218 (size_t)PyString_Size(data));
219}
220%}
221
222
223// case switch for overloading
224%pragma(python) code = "
225import types
226def wxMemoryFSHandler_AddFile(filename, a, b=''):
1e4a197e 227 if wx.wxPy_isinstance(a, (wxImage, wxImagePtr)):
c368d904 228 __wxMemoryFSHandler_AddFile_wxImage(filename, a, b)
1e4a197e 229 elif wx.wxPy_isinstance(a, (wxBitmap, wxBitmapPtr)):
c368d904
RD
230 __wxMemoryFSHandler_AddFile_wxBitmap(filename, a, b)
231 elif type(a) == types.StringType:
232 #__wxMemoryFSHandler_AddFile_wxString(filename, a)
233 __wxMemoryFSHandler_AddFile_Data(filename, a)
234 else: raise TypeError, 'wxImage, wxBitmap or string expected'
235"
236
237
9416aa89
RD
238//---------------------------------------------------------------------------
239
240%init %{
241 wxPyPtrTypeMap_Add("wxFileSystemHandler", "wxPyFileSystemHandler");
242%}
243
c368d904 244//---------------------------------------------------------------------------