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:
Robin Dunn
1999-10-29 22:25:04 +00:00
parent dc2f8a65c0
commit 2abc0a0f9b
32 changed files with 789 additions and 244 deletions

View File

@@ -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);