X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3077d1230554bda900da26302fe3b915e7b3de20..c719013fd40f1d9f0cd1eff5be177da9a743d5c7:/wxPython/src/_printfw.i diff --git a/wxPython/src/_printfw.i b/wxPython/src/_printfw.i index 39af033f2d..570bb5355c 100644 --- a/wxPython/src/_printfw.i +++ b/wxPython/src/_printfw.i @@ -70,7 +70,8 @@ public: bool GetCollate(); int GetOrientation(); - bool Ok(); + bool IsOk(); + %pythoncode { Ok = IsOk } const wxString& GetPrinterName(); bool GetColour(); @@ -80,6 +81,7 @@ public: int GetQuality(); wxPrintBin GetBin(); + wxPrintMode GetPrintMode() const; void SetNoCopies(int v); void SetCollate(bool flag); @@ -92,22 +94,58 @@ public: void SetPaperSize(const wxSize& sz); void SetQuality(int quality); void SetBin(wxPrintBin bin); + void SetPrintMode(wxPrintMode printMode); + + wxString GetFilename() const; + void SetFilename( const wxString &filename ); + + %pythoncode { def __nonzero__(self): return self.IsOk() } + + //char* GetPrivData() const; + //int GetPrivDataLen() const; + //void SetPrivData( char *privData, int len ); + + %extend { + PyObject* GetPrivData() { + PyObject* data; + wxPyBlock_t blocked = wxPyBeginBlockThreads(); + data = PyString_FromStringAndSize(self->GetPrivData(), + self->GetPrivDataLen()); + wxPyEndBlockThreads(blocked); + return data; + } + + void SetPrivData(PyObject* data) { + if (! PyString_Check(data)) { + wxPyBLOCK_THREADS(PyErr_SetString(PyExc_TypeError, + "Expected string object")); + return /* NULL */ ; + } + + wxPyBlock_t blocked = wxPyBeginBlockThreads(); + self->SetPrivData(PyString_AS_STRING(data), PyString_GET_SIZE(data)); + wxPyEndBlockThreads(blocked); + } + } + + + // NOTE: These are now inside of #if WXWIN_COMPATIBILITY_2_4, so be + // prepared to remove them... + // PostScript-specific data +// WXWIN_COMPATIBILITY_2_4 +#if 0 const wxString& GetPrinterCommand(); const wxString& GetPrinterOptions(); const wxString& GetPreviewCommand(); - const wxString& GetFilename(); const wxString& GetFontMetricPath(); double GetPrinterScaleX(); double GetPrinterScaleY(); long GetPrinterTranslateX(); long GetPrinterTranslateY(); - wxPrintMode GetPrintMode(); - void SetPrinterCommand(const wxString& command); void SetPrinterOptions(const wxString& options); void SetPreviewCommand(const wxString& command); - void SetFilename(const wxString& filename); void SetFontMetricPath(const wxString& path); void SetPrinterScaleX(double x); void SetPrinterScaleY(double y); @@ -115,12 +153,21 @@ public: void SetPrinterTranslateX(long x); void SetPrinterTranslateY(long y); void SetPrinterTranslation(long x, long y); - void SetPrintMode(wxPrintMode printMode); - - wxOutputStream* GetOutputStream(); - void SetOutputStream(wxOutputStream* outputstream); +#endif - %pythoncode { def __nonzero__(self): return self.Ok() } + %property(Bin, GetBin, SetBin, doc="See `GetBin` and `SetBin`"); + %property(Collate, GetCollate, SetCollate, doc="See `GetCollate` and `SetCollate`"); + %property(Colour, GetColour, SetColour, doc="See `GetColour` and `SetColour`"); + %property(Duplex, GetDuplex, SetDuplex, doc="See `GetDuplex` and `SetDuplex`"); + %property(Filename, GetFilename, SetFilename, doc="See `GetFilename` and `SetFilename`"); + %property(NoCopies, GetNoCopies, SetNoCopies, doc="See `GetNoCopies` and `SetNoCopies`"); + %property(Orientation, GetOrientation, SetOrientation, doc="See `GetOrientation` and `SetOrientation`"); + %property(PaperId, GetPaperId, SetPaperId, doc="See `GetPaperId` and `SetPaperId`"); + %property(PaperSize, GetPaperSize, SetPaperSize, doc="See `GetPaperSize` and `SetPaperSize`"); + %property(PrintMode, GetPrintMode, SetPrintMode, doc="See `GetPrintMode` and `SetPrintMode`"); + %property(PrinterName, GetPrinterName, SetPrinterName, doc="See `GetPrinterName` and `SetPrinterName`"); + %property(PrivData, GetPrivData, SetPrivData, doc="See `GetPrivData` and `SetPrivData`"); + %property(Quality, GetQuality, SetQuality, doc="See `GetQuality` and `SetQuality`"); }; //--------------------------------------------------------------------------- @@ -130,6 +177,7 @@ public: %nokwargs wxPageSetupDialogData; wxPageSetupDialogData(); wxPageSetupDialogData(const wxPageSetupDialogData& data); // for making copies + wxPageSetupDialogData(const wxPrintData& data); ~wxPageSetupDialogData(); void EnableHelp(bool flag); @@ -137,6 +185,7 @@ public: void EnableOrientation(bool flag); void EnablePaper(bool flag); void EnablePrinter(bool flag); + bool GetDefaultMinMargins(); bool GetEnableMargins(); bool GetEnableOrientation(); @@ -152,13 +201,9 @@ public: wxSize GetPaperSize(); wxPrintData& GetPrintData(); -// %addmethods { -// %new wxPrintData* GetPrintData() { -// return new wxPrintData(self->GetPrintData()); // force a copy -// } -// } - bool Ok(); + bool IsOk(); + %pythoncode { Ok = IsOk } void SetDefaultInfo(bool flag); void SetDefaultMinMargins(bool flag); @@ -168,23 +213,60 @@ public: void SetMinMarginBottomRight(const wxPoint& pt); void SetPaperId(wxPaperSize id); void SetPaperSize(const wxSize& size); + void SetPrintData(const wxPrintData& printData); - %pythoncode { def __nonzero__(self): return self.Ok() } + // Use paper size defined in this object to set the wxPrintData + // paper id + void CalculateIdFromPaperSize(); + + // Use paper id in wxPrintData to set this object's paper size + void CalculatePaperSizeFromId(); + + %pythoncode { def __nonzero__(self): return self.IsOk() } + + %property(DefaultInfo, GetDefaultInfo, SetDefaultInfo, doc="See `GetDefaultInfo` and `SetDefaultInfo`"); + %property(DefaultMinMargins, GetDefaultMinMargins, SetDefaultMinMargins, doc="See `GetDefaultMinMargins` and `SetDefaultMinMargins`"); + +// %property(EnableHelp, GetEnableHelp, doc="See `GetEnableHelp`"); +// %property(EnableMargins, GetEnableMargins, doc="See `GetEnableMargins`"); +// %property(EnableOrientation, GetEnableOrientation, doc="See `GetEnableOrientation`"); +// %property(EnablePaper, GetEnablePaper, doc="See `GetEnablePaper`"); +// %property(EnablePrinter, GetEnablePrinter, doc="See `GetEnablePrinter`"); + + %property(MarginBottomRight, GetMarginBottomRight, SetMarginBottomRight, doc="See `GetMarginBottomRight` and `SetMarginBottomRight`"); + %property(MarginTopLeft, GetMarginTopLeft, SetMarginTopLeft, doc="See `GetMarginTopLeft` and `SetMarginTopLeft`"); + %property(MinMarginBottomRight, GetMinMarginBottomRight, SetMinMarginBottomRight, doc="See `GetMinMarginBottomRight` and `SetMinMarginBottomRight`"); + %property(MinMarginTopLeft, GetMinMarginTopLeft, SetMinMarginTopLeft, doc="See `GetMinMarginTopLeft` and `SetMinMarginTopLeft`"); + %property(PaperId, GetPaperId, SetPaperId, doc="See `GetPaperId` and `SetPaperId`"); + %property(PaperSize, GetPaperSize, SetPaperSize, doc="See `GetPaperSize` and `SetPaperSize`"); + %property(PrintData, GetPrintData, SetPrintData, doc="See `GetPrintData` and `SetPrintData`"); + }; +// NOTE: Contrary to it's name, this class doesn't derive from wxDialog. It +// is a facade in front of a platform-specific (native dialog) provided by the +// wxPrintFactory. + MustHaveApp(wxPageSetupDialog); -class wxPageSetupDialog : public wxDialog { +class wxPageSetupDialog : public wxObject +{ public: - %pythonAppend wxPageSetupDialog "self._setOORInfo(self)" - wxPageSetupDialog(wxWindow* parent, wxPageSetupDialogData* data = NULL); - + ~wxPageSetupDialog(); + wxPageSetupDialogData& GetPageSetupData(); + wxPageSetupDialogData& GetPageSetupDialogData(); int ShowModal(); + + %pythoncode { def Destroy(self): pass } + + %property(PageSetupData, GetPageSetupData, doc="See `GetPageSetupData`"); + %property(PageSetupDialogData, GetPageSetupDialogData, doc="See `GetPageSetupDialogData`"); + }; //--------------------------------------------------------------------------- @@ -194,7 +276,8 @@ class wxPrintDialogData : public wxObject { public: %nokwargs wxPrintDialogData; wxPrintDialogData(); - wxPrintDialogData(const wxPrintData& printData); // for making copies + wxPrintDialogData(const wxPrintData& printData); + wxPrintDialogData(const wxPrintDialogData& printData); // for making copies ~wxPrintDialogData(); int GetFromPage() const; @@ -206,8 +289,12 @@ public: bool GetSelection() const; bool GetCollate() const; bool GetPrintToFile() const; - bool GetSetupDialog() const; + // WXWIN_COMPATIBILITY_2_4 +#if 0 + bool GetSetupDialog() const; + void SetSetupDialog(bool flag); +#endif void SetFromPage(int v); void SetToPage(int v); void SetMinPage(int v); @@ -217,7 +304,6 @@ public: void SetSelection(bool flag); void SetCollate(bool flag); void SetPrintToFile(bool flag); - void SetSetupDialog(bool flag); void EnablePrintToFile(bool flag); void EnableSelection(bool flag); @@ -230,34 +316,61 @@ public: bool GetEnableHelp() const; // Is this data OK for showing the print dialog? - bool Ok() const; + bool IsOk() const; + %pythoncode { Ok = IsOk } wxPrintData& GetPrintData(); -// %addmethods { -// %new wxPrintData* GetPrintData() { -// return new wxPrintData(self->GetPrintData()); // force a copy -// } -// } void SetPrintData(const wxPrintData& printData); - %pythoncode { def __nonzero__(self): return self.Ok() } + %pythoncode { def __nonzero__(self): return self.IsOk() } + + %property(AllPages, GetAllPages, SetAllPages, doc="See `GetAllPages` and `SetAllPages`"); + %property(Collate, GetCollate, SetCollate, doc="See `GetCollate` and `SetCollate`"); +// %property(EnableHelp, GetEnableHelp, doc="See `GetEnableHelp`"); +// %property(EnablePageNumbers, GetEnablePageNumbers, doc="See `GetEnablePageNumbers`"); +// %property(EnablePrintToFile, GetEnablePrintToFile, doc="See `GetEnablePrintToFile`"); +// %property(EnableSelection, GetEnableSelection, doc="See `GetEnableSelection`"); + %property(FromPage, GetFromPage, SetFromPage, doc="See `GetFromPage` and `SetFromPage`"); + %property(MaxPage, GetMaxPage, SetMaxPage, doc="See `GetMaxPage` and `SetMaxPage`"); + %property(MinPage, GetMinPage, SetMinPage, doc="See `GetMinPage` and `SetMinPage`"); + %property(NoCopies, GetNoCopies, SetNoCopies, doc="See `GetNoCopies` and `SetNoCopies`"); + %property(PrintData, GetPrintData, SetPrintData, doc="See `GetPrintData` and `SetPrintData`"); + %property(PrintToFile, GetPrintToFile, SetPrintToFile, doc="See `GetPrintToFile` and `SetPrintToFile`"); + %property(Selection, GetSelection, SetSelection, doc="See `GetSelection` and `SetSelection`"); + %property(ToPage, GetToPage, SetToPage, doc="See `GetToPage` and `SetToPage`"); }; + MustHaveApp(wxPrintDialog); -class wxPrintDialog : public wxDialog { -public: - %pythonAppend wxPrintDialog "self._setOORInfo(self)" +// NOTE: Contrary to it's name, this class doesn't derive from wxDialog. It +// is a facade in front of a platform-specific (native dialog) provided by the +// wxPrintFactory. + +class wxPrintDialog : public wxObject { +public: wxPrintDialog(wxWindow* parent, wxPrintDialogData* data = NULL); - wxPrintDialogData& GetPrintDialogData(); + // TODO?: wxPrintDialog(wxWindow *parent, wxPrintData* data); + + ~wxPrintDialog(); + + virtual int ShowModal(); + + virtual wxPrintDialogData& GetPrintDialogData(); + virtual wxPrintData& GetPrintData(); %newobject GetPrintDC; - wxDC* GetPrintDC(); - int ShowModal(); + virtual wxDC *GetPrintDC(); + + %pythoncode { def Destroy(self): pass } + + %property(PrintDC, GetPrintDC, doc="See `GetPrintDC`"); + %property(PrintData, GetPrintData, doc="See `GetPrintData`"); + %property(PrintDialogData, GetPrintDialogData, doc="See `GetPrintDialogData`"); }; @@ -280,29 +393,37 @@ public: wxPrinter(wxPrintDialogData* data = NULL); ~wxPrinter(); - void CreateAbortWindow(wxWindow* parent, wxPyPrintout* printout); - wxPrintDialogData& GetPrintDialogData(); - bool Print(wxWindow *parent, wxPyPrintout *printout, int prompt=True); - wxDC* PrintDialog(wxWindow *parent); - void ReportError(wxWindow *parent, wxPyPrintout *printout, const wxString& message); - bool Setup(wxWindow *parent); - bool GetAbort(); + virtual wxWindow *CreateAbortWindow(wxWindow *parent, wxPyPrintout *printout); + virtual void ReportError(wxWindow *parent, wxPyPrintout *printout, const wxString& message); + + virtual bool Setup(wxWindow *parent); + virtual bool Print(wxWindow *parent, wxPyPrintout *printout, bool prompt = true); + virtual wxDC* PrintDialog(wxWindow *parent); + + virtual wxPrintDialogData& GetPrintDialogData() const; + bool GetAbort(); static wxPrinterError GetLastError(); + + %property(Abort, GetAbort, doc="See `GetAbort`"); + %property(PrintDialogData, GetPrintDialogData, doc="See `GetPrintDialogData`"); }; //--------------------------------------------------------------------------- -// Custom wxPrintout class that knows how to call python +// Custom wxPrintout class that knows how to call python, See implementation in +// include/sx/wxPython/printfw.h + %{ +IMPLEMENT_ABSTRACT_CLASS(wxPyPrintout, wxPrintout); // 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 hadErr = false; bool found; - bool blocked = wxPyBeginBlockThreads(); + wxPyBlock_t blocked = wxPyBeginBlockThreads(); if ((found = wxPyCBH_findCallback(m_myInst, "GetPageInfo"))) { PyObject* result = wxPyCBH_callCallbackObj(m_myInst, Py_BuildValue("()")); if (result && PyTuple_Check(result) && PyTuple_Size(result) == 4) { @@ -310,22 +431,22 @@ void wxPyPrintout::GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *p val = PyTuple_GetItem(result, 0); if (PyInt_Check(val)) *minPage = PyInt_AsLong(val); - else hadErr = True; + else hadErr = true; val = PyTuple_GetItem(result, 1); if (PyInt_Check(val)) *maxPage = PyInt_AsLong(val); - else hadErr = True; + else hadErr = true; val = PyTuple_GetItem(result, 2); if (PyInt_Check(val)) *pageFrom = PyInt_AsLong(val); - else hadErr = True; + else hadErr = true; val = PyTuple_GetItem(result, 3); if (PyInt_Check(val)) *pageTo = PyInt_AsLong(val); - else hadErr = True; + else hadErr = true; } else - hadErr = True; + hadErr = true; if (hadErr) { PyErr_SetString(PyExc_TypeError, "GetPageInfo should return a tuple of 4 integers."); @@ -338,9 +459,6 @@ void wxPyPrintout::GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *p wxPrintout::GetPageInfo(minPage, maxPage, pageFrom, pageTo); } -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); @@ -358,13 +476,18 @@ IMP_PYCALLBACK_BOOL_INT(wxPyPrintout, wxPrintout, HasPage); MustHaveApp(wxPyPrintout); // Now define the custom class for SWIGging -%name(Printout) class wxPyPrintout : public wxObject { +%rename(Printout) wxPyPrintout; +class wxPyPrintout : public wxObject { public: %pythonAppend wxPyPrintout "self._setCallbackInfo(self, Printout)" + %typemap(out) wxPyPrintout*; // turn off this typemap wxPyPrintout(const wxString& title = wxPyPrintoutTitleStr); - //~wxPyPrintout(); wxPrintPreview object takes ownership... + ~wxPyPrintout(); + // Turn it back on again + %typemap(out) wxPyPrintout* { $result = wxPyMake_wxObject($1, $owner); } + void _setCallbackInfo(PyObject* self, PyObject* _class); @@ -396,15 +519,30 @@ public: void SetIsPreview(bool p); - bool base_OnBeginDocument(int startPage, int endPage); - void base_OnEndDocument(); - void base_OnBeginPrinting(); - void base_OnEndPrinting(); - void base_OnPreparePrinting(); - bool base_HasPage(int page); + bool OnBeginDocument(int startPage, int endPage); + void OnEndDocument(); + void OnBeginPrinting(); + void OnEndPrinting(); + void OnPreparePrinting(); + bool HasPage(int page); DocDeclA( - void, base_GetPageInfo(int *OUTPUT, int *OUTPUT, int *OUTPUT, int *OUTPUT), - "base_GetPageInfo() -> (minPage, maxPage, pageFrom, pageTo)"); + void, GetPageInfo(int *OUTPUT, int *OUTPUT, int *OUTPUT, int *OUTPUT), + "GetPageInfo() -> (minPage, maxPage, pageFrom, pageTo)"); + + %MAKE_BASE_FUNC(Printout, OnBeginDocument); + %MAKE_BASE_FUNC(Printout, OnEndDocument); + %MAKE_BASE_FUNC(Printout, OnBeginPrinting); + %MAKE_BASE_FUNC(Printout, OnEndPrinting); + %MAKE_BASE_FUNC(Printout, OnPreparePrinting); + %MAKE_BASE_FUNC(Printout, GetPageInfo); + + + %property(DC, GetDC, SetDC, doc="See `GetDC` and `SetDC`"); + %property(PPIPrinter, GetPPIPrinter, SetPPIPrinter, doc="See `GetPPIPrinter` and `SetPPIPrinter`"); + %property(PPIScreen, GetPPIScreen, SetPPIScreen, doc="See `GetPPIScreen` and `SetPPIScreen`"); + %property(PageSizeMM, GetPageSizeMM, SetPageSizeMM, doc="See `GetPageSizeMM` and `SetPageSizeMM`"); + %property(PageSizePixels, GetPageSizePixels, SetPageSizePixels, doc="See `GetPageSizePixels` and `SetPageSizePixels`"); + %property(Title, GetTitle, doc="See `GetTitle`"); }; //--------------------------------------------------------------------------- @@ -431,19 +569,24 @@ MustHaveApp(wxPreviewFrame); class wxPreviewFrame : public wxFrame { public: + %disownarg(wxPrintPreview*); + %pythonAppend wxPreviewFrame "self._setOORInfo(self)" - wxPreviewFrame(wxPrintPreview* preview, wxFrame* parent, const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxPyFrameNameStr); + %cleardisown(wxPrintPreview*); + void Initialize(); void CreateControlBar(); void CreateCanvas(); wxPreviewControlBar* GetControlBar() const; + + %property(ControlBar, GetControlBar, doc="See `GetControlBar`"); }; @@ -492,6 +635,9 @@ public: void OnFirst(); void OnLast(); void OnGoto(); + + %property(PrintPreview, GetPrintPreview, doc="See `GetPrintPreview`"); + %property(ZoomControl, GetZoomControl, SetZoomControl, doc="See `GetZoomControl` and `SetZoomControl`"); }; @@ -502,6 +648,8 @@ MustHaveApp(wxPrintPreview); class wxPrintPreview : public wxObject { public: + %disownarg(wxPyPrintout*); + %nokwargs wxPrintPreview; wxPrintPreview(wxPyPrintout* printout, wxPyPrintout* printoutForPrinting, @@ -510,6 +658,8 @@ public: wxPyPrintout* printoutForPrinting, wxPrintData* data); + ~wxPrintPreview(); + virtual bool SetCurrentPage(int pageNum); int GetCurrentPage(); @@ -517,6 +667,8 @@ public: wxPyPrintout *GetPrintout(); wxPyPrintout *GetPrintoutForPrinting(); + %cleardisown(wxPyPrintout*); + void SetFrame(wxFrame *frame); void SetCanvas(wxPreviewCanvas *canvas); @@ -543,13 +695,24 @@ public: int GetMaxPage(); int GetMinPage(); - bool Ok(); + bool IsOk(); + %pythoncode { Ok = IsOk } void SetOk(bool ok); virtual bool Print(bool interactive); virtual void DetermineScaling(); - %pythoncode { def __nonzero__(self): return self.Ok() } + %pythoncode { def __nonzero__(self): return self.IsOk() } + + %property(Canvas, GetCanvas, SetCanvas, doc="See `GetCanvas` and `SetCanvas`"); + %property(CurrentPage, GetCurrentPage, SetCurrentPage, doc="See `GetCurrentPage` and `SetCurrentPage`"); + %property(Frame, GetFrame, SetFrame, doc="See `GetFrame` and `SetFrame`"); + %property(MaxPage, GetMaxPage, doc="See `GetMaxPage`"); + %property(MinPage, GetMinPage, doc="See `GetMinPage`"); + %property(PrintDialogData, GetPrintDialogData, doc="See `GetPrintDialogData`"); + %property(Printout, GetPrintout, SetPrintout, doc="See `GetPrintout` and `SetPrintout`"); + %property(PrintoutForPrinting, GetPrintoutForPrinting, doc="See `GetPrintoutForPrinting`"); + %property(Zoom, GetZoom, SetZoom, doc="See `GetZoom` and `SetZoom`"); }; @@ -560,31 +723,27 @@ public: %{ -#define DEC_PYCALLBACK_BOOL_PREWINDC(CBNAME) \ - bool CBNAME(wxPreviewCanvas* a, wxDC& b); \ - bool base_##CBNAME(wxPreviewCanvas* a, wxDC& b) - - -#define IMP_PYCALLBACK_BOOL_PREWINDC(CLASS, PCLASS, CBNAME) \ - bool CLASS::CBNAME(wxPreviewCanvas* a, wxDC& b) { \ - bool rval=False; \ - bool found; \ - bool blocked = wxPyBeginBlockThreads(); \ - if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ - PyObject* win = wxPyMake_wxObject(a,false); \ - PyObject* dc = wxPyMake_wxObject(&b,false); \ - rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OO)", win, dc));\ - Py_DECREF(win); \ - Py_DECREF(dc); \ - } \ - wxPyEndBlockThreads(blocked); \ - if (! found) \ - rval = PCLASS::CBNAME(a, b); \ - return rval; \ - } \ - bool CLASS::base_##CBNAME(wxPreviewCanvas* a, wxDC& b) { \ - return PCLASS::CBNAME(a, b); \ - } +#define DEC_PYCALLBACK_BOOL_PREWINDC(CBNAME) \ + bool CBNAME(wxPreviewCanvas* a, wxDC& b) + + +#define IMP_PYCALLBACK_BOOL_PREWINDC(CLASS, PCLASS, CBNAME) \ + bool CLASS::CBNAME(wxPreviewCanvas* a, wxDC& b) { \ + bool rval=false; \ + bool found; \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ + if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ + PyObject* win = wxPyMake_wxObject(a,false); \ + PyObject* dc = wxPyMake_wxObject(&b,false); \ + rval = wxPyCBH_callCallback(m_myInst, Py_BuildValue("(OO)", win, dc)); \ + Py_DECREF(win); \ + Py_DECREF(dc); \ + } \ + wxPyEndBlockThreads(blocked); \ + if (! found) \ + rval = PCLASS::CBNAME(a, b); \ + return rval; \ + } @@ -600,7 +759,7 @@ public: {} wxPyPrintPreview(wxPyPrintout* printout, wxPyPrintout* printoutForPrinting, - wxPrintData* data=NULL) + wxPrintData* data) : wxPrintPreview(printout, printoutForPrinting, data) {} @@ -639,6 +798,8 @@ MustHaveApp(wxPyPrintPreview); class wxPyPrintPreview : public wxPrintPreview { public: + %disownarg(wxPyPrintout*); + %pythonAppend wxPyPrintPreview "self._setCallbackInfo(self, PyPrintPreview)" %nokwargs wxPyPrintPreview; wxPyPrintPreview(wxPyPrintout* printout, @@ -648,15 +809,25 @@ public: wxPyPrintout* printoutForPrinting, wxPrintData* data); + %cleardisown(wxPyPrintout*); + void _setCallbackInfo(PyObject* self, PyObject* _class); - bool base_SetCurrentPage(int pageNum); - bool base_PaintPage(wxPreviewCanvas *canvas, wxDC& dc); - bool base_DrawBlankPage(wxPreviewCanvas *canvas, wxDC& dc); - bool base_RenderPage(int pageNum); - void base_SetZoom(int percent); - bool base_Print(bool interactive); - void base_DetermineScaling(); + bool SetCurrentPage(int pageNum); + bool PaintPage(wxPreviewCanvas *canvas, wxDC& dc); + bool DrawBlankPage(wxPreviewCanvas *canvas, wxDC& dc); + bool RenderPage(int pageNum); + void SetZoom(int percent); + bool Print(bool interactive); + void DetermineScaling(); + + %MAKE_BASE_FUNC(PyPrintPreview, SetCurrentPage); + %MAKE_BASE_FUNC(PyPrintPreview, PaintPage); + %MAKE_BASE_FUNC(PyPrintPreview, DrawBlankPage); + %MAKE_BASE_FUNC(PyPrintPreview, RenderPage); + %MAKE_BASE_FUNC(PyPrintPreview, SetZoom); + %MAKE_BASE_FUNC(PyPrintPreview, Print); + %MAKE_BASE_FUNC(PyPrintPreview, DetermineScaling); }; @@ -665,7 +836,7 @@ public: %{ class wxPyPreviewFrame : public wxPreviewFrame { - DECLARE_CLASS(wxPyPreviewFrame); + DECLARE_CLASS(wxPyPreviewFrame) public: wxPyPreviewFrame(wxPrintPreview* preview, wxFrame* parent, const wxString& title, @@ -713,9 +884,13 @@ public: void SetPreviewCanvas(wxPreviewCanvas* canvas); void SetControlBar(wxPreviewControlBar* bar); - void base_Initialize(); - void base_CreateCanvas(); - void base_CreateControlBar(); + void Initialize(); + void CreateCanvas(); + void CreateControlBar(); + + %MAKE_BASE_FUNC(PyPreviewFrame, Initialize); + %MAKE_BASE_FUNC(PyPreviewFrame, CreateCanvas); + %MAKE_BASE_FUNC(PyPreviewFrame, CreateControlBar); }; @@ -724,7 +899,7 @@ public: %{ class wxPyPreviewControlBar : public wxPreviewControlBar { - DECLARE_CLASS(wxPyPreviewControlBar); + DECLARE_CLASS(wxPyPreviewControlBar) public: wxPyPreviewControlBar(wxPrintPreview *preview, long buttons, @@ -769,10 +944,12 @@ public: void SetPrintPreview(wxPrintPreview* preview); - void base_CreateButtons(); - void base_SetZoomControl(int zoom); -}; + void CreateButtons(); + void SetZoomControl(int zoom); + %MAKE_BASE_FUNC(PreviewControlBar, CreateButtons); + %MAKE_BASE_FUNC(PreviewControlBar, SetZoomControl); +}; //--------------------------------------------------------------------------- //---------------------------------------------------------------------------