X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..f9ee64b1356530b7f5c957d250d2a1dcbef60f60:/wxPython/src/printfw.i diff --git a/wxPython/src/printfw.i b/wxPython/src/printfw.i index c10fad5b2c..bd02f63860 100644 --- a/wxPython/src/printfw.i +++ b/wxPython/src/printfw.i @@ -16,6 +16,7 @@ #include "helpers.h" #include #include +#include #include "printfw.h" %} @@ -41,7 +42,7 @@ -class wxPrintData { +class wxPrintData : public wxObject { public: wxPrintData(); ~wxPrintData(); @@ -69,36 +70,66 @@ public: void SetPaperSize(const wxSize& sz); void SetQuality(wxPrintQuality quality); -// // PostScript-specific data -// 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); -// void SetPrinterScaling(double x, double y); -// void SetPrinterTranslateX(long x); -// void SetPrinterTranslateY(long y); -// void SetPrinterTranslation(long x, long y); -// void SetPrintMode(wxPrintMode printMode); + // PostScript-specific data + 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); + void SetPrinterScaling(double x, double y); + void SetPrinterTranslateX(long x); + void SetPrinterTranslateY(long y); + void SetPrinterTranslation(long x, long y); + void SetPrintMode(wxPrintMode printMode); }; //---------------------------------------------------------------------- -class wxPageSetupDialogData { +#ifdef __WXMSW__ +class wxPrinterDC : public wxDC { +public: + wxPrinterDC(const wxPrintData& printData); + %name(wxPrinterDC2) wxPrinterDC(const wxString& driver, + const wxString& device, + const wxString& output, + bool interactive = TRUE, + int orientation = wxPORTRAIT); +}; +#endif + +//--------------------------------------------------------------------------- + +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(); @@ -132,7 +163,7 @@ public: void SetMarginBottomRight(const wxPoint& pt); void SetMinMarginTopLeft(const wxPoint& pt); void SetMinMarginBottomRight(const wxPoint& pt); - void SetPaperId(wxPaperSize& id); + void SetPaperId(wxPaperSize id); void SetPaperSize(const wxSize& size); void SetPrintData(const wxPrintData& printData); }; @@ -151,7 +182,7 @@ public: //---------------------------------------------------------------------- -class wxPrintDialogData { +class wxPrintDialogData : public wxObject { public: wxPrintDialogData(); ~wxPrintDialogData(); @@ -205,9 +236,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; @@ -237,10 +269,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) { @@ -261,12 +292,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"); - 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; } @@ -290,7 +321,7 @@ public: //---------------------------------------------------------------------- -class wxPrinter { +class wxPrinter : public wxObject { public: wxPrinter(wxPrintDialogData* data = NULL); ~wxPrinter(); @@ -306,7 +337,7 @@ public: //---------------------------------------------------------------------- -class wxPrintPreview { +class wxPrintPreview : public wxObject { public: wxPrintPreview(wxPyPrintout* printout, wxPyPrintout* printoutForPrinting, wxPrintData* data=NULL); // ~wxPrintPreview(); **** ???? @@ -334,12 +365,12 @@ public: class wxPreviewFrame : public wxFrame { public: wxPreviewFrame(wxPrintPreview* preview, wxFrame* parent, const wxString& title, - const wxPoint& pos = wxPyDefaultPosition, - const wxSize& size = wxPyDefaultSize, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, char* name = "frame"); - %pragma(python) addtomethod = "__init__:#wx._StdFrameCallbacks(self)" + %pragma(python) addtomethod = "__init__:self._setOORInfo(self)" void Initialize(); @@ -350,6 +381,11 @@ public: }; //---------------------------------------------------------------------- + +%init %{ + wxPyPtrTypeMap_Add("wxPrintout", "wxPyPrintout"); +%} + //---------------------------------------------------------------------- //----------------------------------------------------------------------