%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();
void SetPrinterTranslateX(long x);
void SetPrinterTranslateY(long y);
void SetPrinterTranslation(long x, long y);
+#endif
};
%nokwargs wxPageSetupDialogData;
wxPageSetupDialogData();
wxPageSetupDialogData(const wxPageSetupDialogData& data); // for making copies
+ wxPageSetupDialogData(const wxPrintData& data);
~wxPageSetupDialogData();
void EnableHelp(bool flag);
void EnableOrientation(bool flag);
void EnablePaper(bool flag);
void EnablePrinter(bool flag);
+
bool GetDefaultMinMargins();
bool GetEnableMargins();
bool GetEnableOrientation();
wxSize GetPaperSize();
wxPrintData& GetPrintData();
-// %addmethods {
-// %new wxPrintData* GetPrintData() {
-// return new wxPrintData(self->GetPrintData()); // force a copy
-// }
-// }
bool Ok();
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() }
};
+// 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);
wxPageSetupDialogData& GetPageSetupData();
+ wxPageSetupDialogData& GetPageSetupDialogData();
int ShowModal();
};
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;
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);
};
+
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);
// TODO?: wxPrintDialog(wxWindow *parent, wxPrintData* data);
wxPrinter(wxPrintDialogData* data = NULL);
~wxPrinter();
- virtual wxWindow *CreateAbortWindow(wxWindow *parent, wxPrintout *printout);
- virtual void ReportError(wxWindow *parent, wxPrintout *printout, const wxString& message);
+ 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, wxPrintout *printout, bool prompt = true);
+ virtual bool Print(wxWindow *parent, wxPyPrintout *printout, bool prompt = true);
virtual wxDC* PrintDialog(wxWindow *parent);
virtual wxPrintDialogData& GetPrintDialogData() const;
bool GetAbort();
static wxPrinterError GetLastError();
+
};
//---------------------------------------------------------------------------
-// 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 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) {
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);
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);
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);
};
//---------------------------------------------------------------------------
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();
class wxPrintPreview : public wxObject {
public:
+ %disownarg(wxPyPrintout*);
+
%nokwargs wxPrintPreview;
wxPrintPreview(wxPyPrintout* printout,
wxPyPrintout* printoutForPrinting,
wxPyPrintout* printoutForPrinting,
wxPrintData* data);
+ ~wxPrintPreview();
+
virtual bool SetCurrentPage(int pageNum);
int GetCurrentPage();
wxPyPrintout *GetPrintout();
wxPyPrintout *GetPrintoutForPrinting();
+ %cleardisown(wxPyPrintout*);
+
void SetFrame(wxFrame *frame);
void SetCanvas(wxPreviewCanvas *canvas);
%{
#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); \
if (! found) \
rval = PCLASS::CBNAME(a, b); \
return rval; \
- } \
- bool CLASS::base_##CBNAME(wxPreviewCanvas* a, wxDC& b) { \
- return PCLASS::CBNAME(a, b); \
- }
+ }
{}
wxPyPrintPreview(wxPyPrintout* printout,
wxPyPrintout* printoutForPrinting,
- wxPrintData* data=NULL)
+ wxPrintData* data)
: wxPrintPreview(printout, printoutForPrinting, data)
{}
class wxPyPrintPreview : public wxPrintPreview
{
public:
+ %disownarg(wxPyPrintout*);
+
%pythonAppend wxPyPrintPreview "self._setCallbackInfo(self, PyPrintPreview)"
%nokwargs wxPyPrintPreview;
wxPyPrintPreview(wxPyPrintout* printout,
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);
};
%{
class wxPyPreviewFrame : public wxPreviewFrame
{
- DECLARE_CLASS(wxPyPreviewFrame);
+ DECLARE_CLASS(wxPyPreviewFrame)
public:
wxPyPreviewFrame(wxPrintPreview* preview, wxFrame* parent,
const wxString& title,
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);
};
%{
class wxPyPreviewControlBar : public wxPreviewControlBar
{
- DECLARE_CLASS(wxPyPreviewControlBar);
+ DECLARE_CLASS(wxPyPreviewControlBar)
public:
wxPyPreviewControlBar(wxPrintPreview *preview,
long buttons,
void SetPrintPreview(wxPrintPreview* preview);
- void base_CreateButtons();
- void base_SetZoomControl(int zoom);
-};
-
-//---------------------------------------------------------------------------
-// wxPrintFactory
-//---------------------------------------------------------------------------
-
-class wxPrintFactory
-{
-public:
- // wxPrintFactory() {} *** It's an ABC
- // virtual ~wxPrintFactory();
-
- virtual wxPrinterBase *CreatePrinter( wxPrintDialogData* data );
-
- %nokwargs CreatePrintPreview;
- virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
- wxPrintout *printout = NULL,
- wxPrintDialogData *data = NULL );
- virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
- wxPrintout *printout,
- wxPrintData *data );
-
- %nokwargs CreatePrintDialog;
- virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
- wxPrintDialogData *data = NULL );
- virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
- wxPrintData *data );
-
- // What to do and what to show in the wxPrintDialog
- // a) Use the generic print setup dialog or a native one?
- virtual bool HasPrintSetupDialog();
- virtual wxDialog *CreatePrintSetupDialog( wxWindow *parent, wxPrintData *data );
-
- // b) Provide the "print to file" option ourselves or via print setup?
- virtual bool HasOwnPrintToFile();
-
- // c) Show current printer
- virtual bool HasPrinterLine();
- virtual wxString CreatePrinterLine();
-
- // d) Show Status line for current printer?
- virtual bool HasStatusLine();
- virtual wxString CreateStatusLine();
-
-
- virtual wxPrintNativeDataBase *CreatePrintNativeData();
-
- static void SetPrintFactory( wxPrintFactory *factory );
- static wxPrintFactory *GetFactory();
- //static wxPrintFactory *m_factory;
-};
-
-// class wxNativePrintFactory: public wxPrintFactory
-// {
-// public:
-// virtual wxPrinterBase *CreatePrinter( wxPrintDialogData *data );
-
-// virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
-// wxPrintout *printout = NULL,
-// wxPrintDialogData *data = NULL );
-// virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
-// wxPrintout *printout,
-// wxPrintData *data );
-
-// virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
-// wxPrintDialogData *data = NULL );
-// virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
-// wxPrintData *data );
-
-// virtual bool HasPrintSetupDialog();
-// virtual wxDialog *CreatePrintSetupDialog( wxWindow *parent, wxPrintData *data );
-// virtual bool HasOwnPrintToFile();
-// virtual bool HasPrinterLine();
-// virtual wxString CreatePrinterLine();
-// virtual bool HasStatusLine();
-// virtual wxString CreateStatusLine();
-
-// virtual wxPrintNativeDataBase *CreatePrintNativeData();
-// };
-
+ void CreateButtons();
+ void SetZoomControl(int zoom);
-class wxPrintNativeDataBase: public wxObject
-{
-public:
- wxPrintNativeDataBase();
- virtual ~wxPrintNativeDataBase() {}
-
- virtual bool TransferTo( wxPrintData &data ) = 0;
- virtual bool TransferFrom( const wxPrintData &data ) = 0;
-
- virtual bool Ok() const = 0;
-
- int m_ref;
+ %MAKE_BASE_FUNC(PreviewControlBar, CreateButtons);
+ %MAKE_BASE_FUNC(PreviewControlBar, SetZoomControl);
};
-
-
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
%init %{