X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/926bb76c2a79fcb83406552e9ca9324fc249ed31..32b70aec1ff90877ae0ce2ce82967f698218fbdc:/wxPython/src/printfw.i diff --git a/wxPython/src/printfw.i b/wxPython/src/printfw.i index 2ca9a23f41..74a74ed6af 100644 --- a/wxPython/src/printfw.i +++ b/wxPython/src/printfw.i @@ -16,12 +16,23 @@ #include "helpers.h" #include #include +#include #include "printfw.h" %} //---------------------------------------------------------------------- +%{ + // Put some wx default wxChar* values into wxStrings. + static const wxChar* wxPrintoutTitleStr = wxT("Printout"); + DECLARE_DEF_STRING(PrintoutTitleStr); + + DECLARE_DEF_STRING(FrameNameStr); +%} + +//---------------------------------------------------------------------- + %include typemaps.i %include my_typemaps.i @@ -41,7 +52,7 @@ -class wxPrintData { +class wxPrintData : public wxObject { public: wxPrintData(); ~wxPrintData(); @@ -112,7 +123,23 @@ public: //--------------------------------------------------------------------------- -class wxPageSetupDialogData { +class wxPostScriptDC : public wxDC { +public: + wxPostScriptDC(const wxPrintData& printData); + %name(wxPostScriptDC2)wxPostScriptDC(const wxString& output, + bool interactive = TRUE, + wxWindow* parent = NULL); + + wxPrintData& GetPrintData(); + void SetPrintData(const wxPrintData& data); + + static void SetResolution(int ppi); + static int GetResolution(); +}; + +//--------------------------------------------------------------------------- + +class wxPageSetupDialogData : public wxObject { public: wxPageSetupDialogData(); ~wxPageSetupDialogData(); @@ -165,7 +192,7 @@ public: //---------------------------------------------------------------------- -class wxPrintDialogData { +class wxPrintDialogData : public wxObject { public: wxPrintDialogData(); ~wxPrintDialogData(); @@ -219,9 +246,10 @@ public: // 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 found; - bool doSave = wxPyRestoreThread(); - if (m_myInst.findCallback("GetPageInfo")) { + wxPyBeginBlockThreads(); + if ((found = m_myInst.findCallback("GetPageInfo"))) { PyObject* result = m_myInst.callCallbackObj(Py_BuildValue("()")); if (result && PyTuple_Check(result) && PyTuple_Size(result) == 4) { PyObject* val; @@ -251,10 +279,9 @@ void wxPyPrintout::GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *p } Py_DECREF(result); } - else + wxPyEndBlockThreads(); + if (! found) wxPrintout::GetPageInfo(minPage, maxPage, pageFrom, pageTo); - - wxPySaveThread(doSave); } void wxPyPrintout::base_GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *pageTo) { @@ -275,12 +302,12 @@ IMP_PYCALLBACK_BOOL_INT(wxPyPrintout, wxPrintout, HasPage); // Now define the custom class for SWIGging -%name(wxPrintout) class wxPyPrintout { +%name(wxPrintout) class wxPyPrintout : public wxObject { public: - wxPyPrintout(const char* title = "Printout"); + wxPyPrintout(const wxString& title = wxPyPrintoutTitleStr); - void _setSelf(PyObject* self, PyObject* _class); - %pragma(python) addtomethod = "__init__:self._setSelf(self, wxPrintout)" + void _setCallbackInfo(PyObject* self, PyObject* _class); + %pragma(python) addtomethod = "__init__:self._setCallbackInfo(self, wxPrintout)" %addmethods { void Destroy() { delete self; } @@ -304,7 +331,7 @@ public: //---------------------------------------------------------------------- -class wxPrinter { +class wxPrinter : public wxObject { public: wxPrinter(wxPrintDialogData* data = NULL); ~wxPrinter(); @@ -314,13 +341,13 @@ public: wxPrintDialogData& GetPrintDialogData(); bool Print(wxWindow *parent, wxPyPrintout *printout, int prompt=TRUE); wxDC* PrintDialog(wxWindow *parent); - void ReportError(wxWindow *parent, wxPyPrintout *printout, char* message); + void ReportError(wxWindow *parent, wxPyPrintout *printout, const wxString& message); bool Setup(wxWindow *parent); }; //---------------------------------------------------------------------- -class wxPrintPreview { +class wxPrintPreview : public wxObject { public: wxPrintPreview(wxPyPrintout* printout, wxPyPrintout* printoutForPrinting, wxPrintData* data=NULL); // ~wxPrintPreview(); **** ???? @@ -351,9 +378,9 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, - char* name = "frame"); + const wxString& name = wxPyFrameNameStr); - %pragma(python) addtomethod = "__init__:#wx._StdFrameCallbacks(self)" + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" void Initialize(); @@ -364,6 +391,11 @@ public: }; //---------------------------------------------------------------------- + +%init %{ + wxPyPtrTypeMap_Add("wxPrintout", "wxPyPrintout"); +%} + //---------------------------------------------------------------------- //----------------------------------------------------------------------