Added wxPython support of new HTML Printing classes.
Fixed thread problem Other miscellaneous fixes, minor additions, etc. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4265 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
#include "helpers.h"
|
||||
#include <wx/print.h>
|
||||
#include <wx/printdlg.h>
|
||||
|
||||
#include "printfw.h"
|
||||
%}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
@@ -198,66 +200,53 @@ public:
|
||||
//----------------------------------------------------------------------
|
||||
// Custom wxPrintout class that knows how to call python
|
||||
%{
|
||||
class wxPyPrintout : public wxPrintout {
|
||||
public:
|
||||
wxPyPrintout(const wxString& title) : wxPrintout(title) {}
|
||||
|
||||
DEC_PYCALLBACK_BOOL_INTINT(OnBeginDocument);
|
||||
DEC_PYCALLBACK__(OnEndDocument);
|
||||
DEC_PYCALLBACK__(OnBeginPrinting);
|
||||
DEC_PYCALLBACK__(OnEndPrinting);
|
||||
DEC_PYCALLBACK__(OnPreparePrinting);
|
||||
DEC_PYCALLBACK_BOOL_INT_pure(OnPrintPage);
|
||||
DEC_PYCALLBACK_BOOL_INT(HasPage);
|
||||
|
||||
|
||||
// Since this one would be tough and ugly to do with the Macros...
|
||||
void GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *pageTo) {
|
||||
bool hadErr = false;
|
||||
// Since this one would be tough and ugly to do with the Macros...
|
||||
void wxPyPrintout::GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *pageTo) {
|
||||
bool hadErr = false;
|
||||
|
||||
bool doSave = wxPyRestoreThread();
|
||||
if (m_myInst.findCallback("GetPageInfo")) {
|
||||
PyObject* result = m_myInst.callCallbackObj(Py_BuildValue("()"));
|
||||
if (result && PyTuple_Check(result) && PyTuple_Size(result) == 4) {
|
||||
PyObject* val;
|
||||
bool doSave = wxPyRestoreThread();
|
||||
if (m_myInst.findCallback("GetPageInfo")) {
|
||||
PyObject* result = m_myInst.callCallbackObj(Py_BuildValue("()"));
|
||||
if (result && PyTuple_Check(result) && PyTuple_Size(result) == 4) {
|
||||
PyObject* val;
|
||||
|
||||
val = PyTuple_GetItem(result, 0);
|
||||
if (PyInt_Check(val)) *minPage = PyInt_AsLong(val);
|
||||
else hadErr = true;
|
||||
val = PyTuple_GetItem(result, 0);
|
||||
if (PyInt_Check(val)) *minPage = PyInt_AsLong(val);
|
||||
else hadErr = true;
|
||||
|
||||
val = PyTuple_GetItem(result, 1);
|
||||
if (PyInt_Check(val)) *maxPage = PyInt_AsLong(val);
|
||||
else hadErr = true;
|
||||
val = PyTuple_GetItem(result, 1);
|
||||
if (PyInt_Check(val)) *maxPage = PyInt_AsLong(val);
|
||||
else hadErr = true;
|
||||
|
||||
val = PyTuple_GetItem(result, 2);
|
||||
if (PyInt_Check(val)) *pageFrom = PyInt_AsLong(val);
|
||||
else hadErr = true;
|
||||
val = PyTuple_GetItem(result, 2);
|
||||
if (PyInt_Check(val)) *pageFrom = PyInt_AsLong(val);
|
||||
else hadErr = true;
|
||||
|
||||
val = PyTuple_GetItem(result, 3);
|
||||
if (PyInt_Check(val)) *pageTo = PyInt_AsLong(val);
|
||||
else hadErr = true;
|
||||
}
|
||||
else
|
||||
hadErr = true;
|
||||
|
||||
if (hadErr) {
|
||||
PyErr_SetString(PyExc_TypeError, "GetPageInfo should return a tuple of 4 integers.");
|
||||
PyErr_Print();
|
||||
}
|
||||
Py_DECREF(result);
|
||||
val = PyTuple_GetItem(result, 3);
|
||||
if (PyInt_Check(val)) *pageTo = PyInt_AsLong(val);
|
||||
else hadErr = true;
|
||||
}
|
||||
else
|
||||
wxPrintout::GetPageInfo(minPage, maxPage, pageFrom, pageTo);
|
||||
hadErr = true;
|
||||
|
||||
wxPySaveThread(doSave);
|
||||
if (hadErr) {
|
||||
PyErr_SetString(PyExc_TypeError, "GetPageInfo should return a tuple of 4 integers.");
|
||||
PyErr_Print();
|
||||
}
|
||||
Py_DECREF(result);
|
||||
}
|
||||
|
||||
void base_GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *pageTo) {
|
||||
else
|
||||
wxPrintout::GetPageInfo(minPage, maxPage, pageFrom, pageTo);
|
||||
}
|
||||
|
||||
PYPRIVATE;
|
||||
};
|
||||
wxPySaveThread(doSave);
|
||||
}
|
||||
|
||||
void wxPyPrintout::base_GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *pageTo) {
|
||||
wxPrintout::GetPageInfo(minPage, maxPage, pageFrom, pageTo);
|
||||
}
|
||||
|
||||
|
||||
IMP_PYCALLBACK_BOOL_INTINT(wxPyPrintout, wxPrintout, OnBeginDocument);
|
||||
IMP_PYCALLBACK__(wxPyPrintout, wxPrintout, OnEndDocument);
|
||||
|
||||
Reference in New Issue
Block a user