class wxFSFile : public wxObject
{
public:
- %pythonAppend wxFSFile
- "self.thisown = 0 # It will normally be deleted by the user of the wxFileSystem";
-
+ %typemap(out) wxFSFile*; // turn off this typemap
+
wxFSFile(wxInputStream *stream, const wxString& loc,
const wxString& mimetype, const wxString& anchor,
wxDateTime modif);
-
- ~wxFSFile();
+
+ // Turn it back on.
+ %typemap(out) wxFSFile* { $result = wxPyMake_wxObject($1, $owner); }
+
+ ~wxFSFile();
wxInputStream *GetStream();
const wxString& GetMimeType();
-%name(CPPFileSystemHandler) class wxFileSystemHandler //: public wxObject
+%rename(CPPFileSystemHandler) wxFileSystemHandler;
+class wxFileSystemHandler //: public wxObject
{
public:
//wxFileSystemHandler();
+ ~wxFileSystemHandler();
};
-%name(FileSystemHandler) class wxPyFileSystemHandler : public wxFileSystemHandler
+%rename(FileSystemHandler) wxPyFileSystemHandler;
+class wxPyFileSystemHandler : public wxFileSystemHandler
{
public:
%pythonAppend wxPyFileSystemHandler "self._setCallbackInfo(self, FileSystemHandler)";
-
+
wxPyFileSystemHandler();
void _setCallbackInfo(PyObject* self, PyObject* _class);
wxFileSystem();
~wxFileSystem();
- void ChangePathTo(const wxString& location, bool is_dir = False);
+ void ChangePathTo(const wxString& location, bool is_dir = false);
wxString GetPath();
%newobject OpenFile;
wxString FindFirst(const wxString& spec, int flags = 0);
wxString FindNext();
+ %disownarg(wxFileSystemHandler *handler);
static void AddHandler(wxFileSystemHandler *handler);
+ %cleardisown(wxFileSystemHandler *handler);
+
static void CleanUpHandlers();
// Returns the file URL for a native path
static wxString FileNameToURL(const wxString& filename);
// Returns the native path for a file URL
- //static wxFileName URLToFileName(const wxString& url); *** See below
+ //static wxFileName URLToFileName(const wxString& url);
+ %extend {
+ static wxString URLToFileName(const wxString& url) {
+ wxFileName fname = wxFileSystem::URLToFileName(url);
+ return fname.GetFullPath();
+ }
+ }
};
-// Returns the native path for a file URL
-wxString wxFileSystem_URLToFileName(const wxString& url);
-%{
- wxString wxFileSystem_URLToFileName(const wxString& url) {
- wxFileName fname = wxFileSystem::URLToFileName(url);
- return fname.GetFullPath();
- }
-%}
-
//---------------------------------------------------------------------------
void __wxMemoryFSHandler_AddFile_Data(const wxString& filename,
PyObject* data) {
- wxMemoryFSHandler::AddFile(filename,
- // TODO: Verify data type
- (void*)PyString_AsString(data),
- (size_t)PyString_Size(data));
+ if (! PyString_Check(data)) {
+ wxPyBLOCK_THREADS(PyErr_SetString(PyExc_TypeError,
+ "Expected string object"));
+ return;
+ }
+
+ wxPyBlock_t blocked = wxPyBeginBlockThreads();
+ void* ptr = (void*)PyString_AsString(data);
+ size_t size = PyString_Size(data);
+ wxPyEndBlockThreads(blocked);
+
+ wxMemoryFSHandler::AddFile(filename, ptr, size);
}
%}
// case switch for overloading
%pythoncode {
-def MemoryFSHandler_AddFile(filename, a, b=''):
- if isinstance(a, wx.Image):
- __wxMemoryFSHandler_AddFile_wxImage(filename, a, b)
- elif isinstance(a, wx.Bitmap):
- __wxMemoryFSHandler_AddFile_wxBitmap(filename, a, b)
- elif type(a) == str:
- __wxMemoryFSHandler_AddFile_Data(filename, a)
- else: raise TypeError, 'wx.Image, wx.Bitmap or string expected'
+def MemoryFSHandler_AddFile(filename, dataItem, imgType=-1):
+ """
+ Add 'file' to the memory filesystem. The dataItem parameter can
+ either be a `wx.Bitmap`, `wx.Image` or a string that can contain
+ arbitrary data. If a bitmap or image is used then the imgType
+ parameter should specify what kind of image file it should be
+ written as, wx.BITMAP_TYPE_PNG, etc.
+ """
+ if isinstance(dataItem, wx.Image):
+ __wxMemoryFSHandler_AddFile_wxImage(filename, dataItem, imgType)
+ elif isinstance(dataItem, wx.Bitmap):
+ __wxMemoryFSHandler_AddFile_wxBitmap(filename, dataItem, imgType)
+ elif type(dataItem) == str:
+ __wxMemoryFSHandler_AddFile_Data(filename, dataItem)
+ else:
+ raise TypeError, 'wx.Image, wx.Bitmap or string expected'
}
// Add a file to the memory FS
%pythoncode { AddFile = staticmethod(MemoryFSHandler_AddFile) }
-
+
bool CanOpen(const wxString& location);
%newobject OpenFile;
wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);