X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1b8c7ba607a15a2ff8a04448138df9ffff7df6c5..fdcbb1ce012dbad3a1dd4734fd0323efe7f5154a:/wxPython/src/_printfw.i diff --git a/wxPython/src/_printfw.i b/wxPython/src/_printfw.i index 115834daf2..cebbc4c996 100644 --- a/wxPython/src/_printfw.i +++ b/wxPython/src/_printfw.i @@ -100,11 +100,40 @@ public: %pythoncode { def __nonzero__(self): return self.Ok() } + //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(); @@ -123,6 +152,7 @@ public: void SetPrinterTranslateX(long x); void SetPrinterTranslateY(long y); void SetPrinterTranslation(long x, long y); +#endif }; @@ -133,6 +163,7 @@ public: %nokwargs wxPageSetupDialogData; wxPageSetupDialogData(); wxPageSetupDialogData(const wxPageSetupDialogData& data); // for making copies + wxPageSetupDialogData(const wxPrintData& data); ~wxPageSetupDialogData(); void EnableHelp(bool flag); @@ -140,6 +171,7 @@ public: void EnableOrientation(bool flag); void EnablePaper(bool flag); void EnablePrinter(bool flag); + bool GetDefaultMinMargins(); bool GetEnableMargins(); bool GetEnableOrientation(); @@ -155,11 +187,6 @@ public: wxSize GetPaperSize(); wxPrintData& GetPrintData(); -// %addmethods { -// %new wxPrintData* GetPrintData() { -// return new wxPrintData(self->GetPrintData()); // force a copy -// } -// } bool Ok(); @@ -171,8 +198,16 @@ public: void SetMinMarginBottomRight(const wxPoint& pt); void SetPaperId(wxPaperSize id); void SetPaperSize(const wxSize& size); + void SetPrintData(const wxPrintData& printData); + // 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.Ok() } }; @@ -201,7 +236,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; @@ -215,9 +251,10 @@ public: bool GetPrintToFile() 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); @@ -304,6 +341,7 @@ public: bool GetAbort(); static wxPrinterError GetLastError(); + }; @@ -320,7 +358,7 @@ void wxPyPrintout::GetPageInfo(int *minPage, int *maxPage, int *pageFrom, int *p 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) { @@ -356,9 +394,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); @@ -380,10 +415,14 @@ MustHaveApp(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); @@ -415,15 +454,22 @@ 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); }; //--------------------------------------------------------------------------- @@ -450,14 +496,17 @@ 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(); @@ -521,6 +570,8 @@ MustHaveApp(wxPrintPreview); class wxPrintPreview : public wxObject { public: + %disownarg(wxPyPrintout*); + %nokwargs wxPrintPreview; wxPrintPreview(wxPyPrintout* printout, wxPyPrintout* printoutForPrinting, @@ -529,6 +580,8 @@ public: wxPyPrintout* printoutForPrinting, wxPrintData* data); + ~wxPrintPreview(); + virtual bool SetCurrentPage(int pageNum); int GetCurrentPage(); @@ -536,6 +589,8 @@ public: wxPyPrintout *GetPrintout(); wxPyPrintout *GetPrintoutForPrinting(); + %cleardisown(wxPyPrintout*); + void SetFrame(wxFrame *frame); void SetCanvas(wxPreviewCanvas *canvas); @@ -580,15 +635,14 @@ public: %{ #define DEC_PYCALLBACK_BOOL_PREWINDC(CBNAME) \ - bool CBNAME(wxPreviewCanvas* a, wxDC& b); \ - bool base_##CBNAME(wxPreviewCanvas* a, wxDC& b) + 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; \ - bool blocked = wxPyBeginBlockThreads(); \ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); \ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \ PyObject* win = wxPyMake_wxObject(a,false); \ PyObject* dc = wxPyMake_wxObject(&b,false); \ @@ -600,10 +654,7 @@ public: if (! found) \ rval = PCLASS::CBNAME(a, b); \ return rval; \ - } \ - bool CLASS::base_##CBNAME(wxPreviewCanvas* a, wxDC& b) { \ - return PCLASS::CBNAME(a, b); \ - } + } @@ -619,7 +670,7 @@ public: {} wxPyPrintPreview(wxPyPrintout* printout, wxPyPrintout* printoutForPrinting, - wxPrintData* data=NULL) + wxPrintData* data) : wxPrintPreview(printout, printoutForPrinting, data) {} @@ -658,6 +709,8 @@ MustHaveApp(wxPyPrintPreview); class wxPyPrintPreview : public wxPrintPreview { public: + %disownarg(wxPyPrintout*); + %pythonAppend wxPyPrintPreview "self._setCallbackInfo(self, PyPrintPreview)" %nokwargs wxPyPrintPreview; wxPyPrintPreview(wxPyPrintout* printout, @@ -667,15 +720,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); }; @@ -684,7 +747,7 @@ public: %{ class wxPyPreviewFrame : public wxPreviewFrame { - DECLARE_CLASS(wxPyPreviewFrame); + DECLARE_CLASS(wxPyPreviewFrame) public: wxPyPreviewFrame(wxPrintPreview* preview, wxFrame* parent, const wxString& title, @@ -732,9 +795,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); }; @@ -743,7 +810,7 @@ public: %{ class wxPyPreviewControlBar : public wxPreviewControlBar { - DECLARE_CLASS(wxPyPreviewControlBar); + DECLARE_CLASS(wxPyPreviewControlBar) public: wxPyPreviewControlBar(wxPrintPreview *preview, long buttons, @@ -788,8 +855,11 @@ 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); }; //---------------------------------------------------------------------------