git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
235 lines
7.2 KiB
OpenEdge ABL
235 lines
7.2 KiB
OpenEdge ABL
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: filesys.i
|
|
// Purpose: SWIG definitions of the wxFileSystem family of classes
|
|
//
|
|
// Author: Joerg Baumann and Robin Dunn
|
|
//
|
|
// Created: 25-Sept-2000
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 2000 by Joerg Baumann
|
|
// Licence: wxWindows license
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
%module filesys
|
|
|
|
%{
|
|
#include "helpers.h"
|
|
#include "pyistream.h"
|
|
#include <wx/filesys.h>
|
|
#include <wx/fs_inet.h>
|
|
#include <wx/fs_mem.h>
|
|
#include <wx/fs_zip.h>
|
|
%}
|
|
|
|
//----------------------------------------------------------------------
|
|
|
|
%include typemaps.i
|
|
%include my_typemaps.i
|
|
|
|
// Import some definitions of other classes, etc.
|
|
%import _defs.i
|
|
%import utils.i
|
|
%import image.i
|
|
%import streams.i
|
|
|
|
%pragma(python) code = "import wx"
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
class wxFSFile : public wxObject {
|
|
public:
|
|
wxFSFile(wxInputStream *stream, const wxString& loc,
|
|
const wxString& mimetype, const wxString& anchor,
|
|
wxDateTime modif);
|
|
|
|
wxInputStream *GetStream();
|
|
const wxString& GetMimeType();
|
|
const wxString& GetLocation();
|
|
const wxString& GetAnchor();
|
|
wxDateTime GetModificationTime();
|
|
};
|
|
|
|
|
|
// clear typemaps
|
|
%typemap(python,in) wxInputStream *stream;
|
|
%typemap(python,out) wxInputStream *;
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
%{
|
|
// wxPyFileSystemHandler will be the Python class wxFileSystemHandler and handling
|
|
// the callback functions
|
|
class wxPyFileSystemHandler : public wxFileSystemHandler {
|
|
public:
|
|
wxPyFileSystemHandler() : wxFileSystemHandler() {}
|
|
|
|
DEC_PYCALLBACK_BOOL_STRING_pure(CanOpen);
|
|
DEC_PYCALLBACK_FSF_FSSTRING_pure(OpenFile);
|
|
DEC_PYCALLBACK_STRING_STRINGINT_pure(FindFirst);
|
|
DEC_PYCALLBACK_STRING__pure(FindNext);
|
|
|
|
wxString GetProtocol(const wxString& location) {
|
|
return wxFileSystemHandler::GetProtocol(location);
|
|
}
|
|
|
|
wxString GetLeftLocation(const wxString& location) {
|
|
return wxFileSystemHandler::GetLeftLocation(location);
|
|
}
|
|
|
|
wxString GetAnchor(const wxString& location) {
|
|
return wxFileSystemHandler::GetAnchor(location);
|
|
}
|
|
|
|
wxString GetRightLocation(const wxString& location) {
|
|
return wxFileSystemHandler::GetRightLocation(location);
|
|
}
|
|
|
|
wxString GetMimeTypeFromExt(const wxString& location) {
|
|
return wxFileSystemHandler::GetMimeTypeFromExt(location);
|
|
}
|
|
|
|
PYPRIVATE;
|
|
};
|
|
|
|
|
|
IMP_PYCALLBACK_BOOL_STRING_pure(wxPyFileSystemHandler, wxFileSystemHandler, CanOpen);
|
|
IMP_PYCALLBACK_FSF_FSSTRING_pure(wxPyFileSystemHandler, wxFileSystemHandler, OpenFile);
|
|
IMP_PYCALLBACK_STRING_STRINGINT_pure(wxPyFileSystemHandler, wxFileSystemHandler, FindFirst);
|
|
IMP_PYCALLBACK_STRING__pure(wxPyFileSystemHandler, wxFileSystemHandler, FindNext);
|
|
%}
|
|
|
|
|
|
%name(wxCPPFileSystemHandler)class wxFileSystemHandler : public wxObject {
|
|
wxFileSystemHandler();
|
|
}
|
|
|
|
%name(wxFileSystemHandler)class wxPyFileSystemHandler : public wxFileSystemHandler {
|
|
public:
|
|
wxPyFileSystemHandler();
|
|
|
|
void _setCallbackInfo(PyObject* self, PyObject* _class);
|
|
%pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxFileSystemHandler)"
|
|
|
|
bool CanOpen(const wxString& location);
|
|
wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);
|
|
wxString FindFirst(const wxString& spec, int flags = 0);
|
|
wxString FindNext();
|
|
|
|
wxString GetProtocol(const wxString& location);
|
|
wxString GetLeftLocation(const wxString& location);
|
|
wxString GetAnchor(const wxString& location);
|
|
wxString GetRightLocation(const wxString& location) const;
|
|
wxString GetMimeTypeFromExt(const wxString& location);
|
|
};
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
class wxFileSystem : public wxObject {
|
|
public:
|
|
wxFileSystem();
|
|
|
|
void ChangePathTo(const wxString& location, bool is_dir = FALSE);
|
|
wxString GetPath();
|
|
|
|
wxFSFile* OpenFile(const wxString& location);
|
|
|
|
wxString FindFirst(const wxString& spec, int flags = 0);
|
|
wxString FindNext();
|
|
|
|
static void AddHandler(wxFileSystemHandler *handler);
|
|
static void CleanUpHandlers();
|
|
|
|
// // Returns the native path for a file URL
|
|
// static wxFileName URLToFileName(const wxString& url);
|
|
|
|
// // Returns the file URL for a native path
|
|
// static wxString FileNameToURL(const wxFileName& filename);
|
|
};
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
class wxInternetFSHandler : public wxFileSystemHandler {
|
|
public:
|
|
wxInternetFSHandler();
|
|
bool CanOpen(const wxString& location);
|
|
wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);
|
|
};
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
class wxZipFSHandler : public wxFileSystemHandler {
|
|
public:
|
|
wxZipFSHandler();
|
|
|
|
bool CanOpen(const wxString& location);
|
|
wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);
|
|
wxString FindFirst(const wxString& spec, int flags = 0);
|
|
wxString FindNext();
|
|
};
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
class wxMemoryFSHandler : public wxFileSystemHandler {
|
|
public:
|
|
wxMemoryFSHandler();
|
|
|
|
// Remove file from memory FS and free occupied memory
|
|
static void RemoveFile(const wxString& filename);
|
|
|
|
bool CanOpen(const wxString& location);
|
|
wxFSFile* OpenFile(wxFileSystem& fs, const wxString& location);
|
|
wxString FindFirst(const wxString& spec, int flags = 0);
|
|
virtual wxString FindNext();
|
|
};
|
|
|
|
|
|
// getting the overloaded static AddFile method right
|
|
%inline %{
|
|
void __wxMemoryFSHandler_AddFile_wxImage(const wxString& filename,
|
|
wxImage& image,
|
|
long type) {
|
|
wxMemoryFSHandler::AddFile(filename, image, type);
|
|
}
|
|
|
|
void __wxMemoryFSHandler_AddFile_wxBitmap(const wxString& filename,
|
|
const wxBitmap& bitmap,
|
|
long type) {
|
|
wxMemoryFSHandler::AddFile(filename, bitmap, type);
|
|
}
|
|
|
|
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));
|
|
}
|
|
%}
|
|
|
|
|
|
// case switch for overloading
|
|
%pragma(python) code = "
|
|
import types
|
|
def wxMemoryFSHandler_AddFile(filename, a, b=''):
|
|
if wx.wxPy_isinstance(a, (wxImage, wxImagePtr)):
|
|
__wxMemoryFSHandler_AddFile_wxImage(filename, a, b)
|
|
elif wx.wxPy_isinstance(a, (wxBitmap, wxBitmapPtr)):
|
|
__wxMemoryFSHandler_AddFile_wxBitmap(filename, a, b)
|
|
elif type(a) == types.StringType:
|
|
#__wxMemoryFSHandler_AddFile_wxString(filename, a)
|
|
__wxMemoryFSHandler_AddFile_Data(filename, a)
|
|
else: raise TypeError, 'wxImage, wxBitmap or string expected'
|
|
"
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
%init %{
|
|
wxPyPtrTypeMap_Add("wxFileSystemHandler", "wxPyFileSystemHandler");
|
|
%}
|
|
|
|
//---------------------------------------------------------------------------
|