]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_printfw.i
reSWIGged
[wxWidgets.git] / wxPython / src / _printfw.i
index 78bb05e19d52e1e3e51e78e8637d7bec5aef3bc6..897e48a954a3a4faad7df49ccb2dd6c95c006782 100644 (file)
@@ -36,11 +36,34 @@ enum wxPrintMode
     wxPRINT_MODE_STREAM = 4     // Send postscript data into a stream 
 };
 
+enum wxPrintBin
+{
+    wxPRINTBIN_DEFAULT,
+
+    wxPRINTBIN_ONLYONE,
+    wxPRINTBIN_LOWER,
+    wxPRINTBIN_MIDDLE,
+    wxPRINTBIN_MANUAL,
+    wxPRINTBIN_ENVELOPE,
+    wxPRINTBIN_ENVMANUAL,
+    wxPRINTBIN_AUTO,
+    wxPRINTBIN_TRACTOR,
+    wxPRINTBIN_SMALLFMT,
+    wxPRINTBIN_LARGEFMT,
+    wxPRINTBIN_LARGECAPACITY,
+    wxPRINTBIN_CASSETTE,
+    wxPRINTBIN_FORMSOURCE,
+
+    wxPRINTBIN_USER,
+};
 
 
 class wxPrintData : public wxObject {
 public:
+    %nokwargs wxPrintData;
     wxPrintData();
+    wxPrintData(const wxPrintData& data);  // for making copies
+    
     ~wxPrintData();
 
     int GetNoCopies();
@@ -56,7 +79,9 @@ public:
     const wxSize& GetPaperSize();
 
     int GetQuality();
-
+    wxPrintBin GetBin();
+    wxPrintMode GetPrintMode() const;
+    
     void SetNoCopies(int v);
     void SetCollate(bool flag);
     void SetOrientation(int orient);
@@ -67,23 +92,30 @@ public:
     void SetPaperId(wxPaperSize sizeId);
     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.Ok() }
 
+
+    // NOTE: These are now inside of #if WXWIN_COMPATIBILITY_2_4, so be
+    //       prepared to remove them...
+    
     // 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);
@@ -91,19 +123,16 @@ 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);
-
-    %pythoncode { def __nonzero__(self): return self.Ok() }
 };
 
 //---------------------------------------------------------------------------
 
 class wxPageSetupDialogData : public wxObject {
 public:
+    %nokwargs wxPageSetupDialogData;
     wxPageSetupDialogData();
+    wxPageSetupDialogData(const wxPageSetupDialogData& data);  // for making copies
     ~wxPageSetupDialogData();
 
     void EnableHelp(bool flag);
@@ -168,7 +197,7 @@ class wxPrintDialogData : public wxObject {
 public:
     %nokwargs wxPrintDialogData;
     wxPrintDialogData();
-    wxPrintDialogData(const wxPrintData& printData);
+    wxPrintDialogData(const wxPrintData& printData);  // for making copies
     ~wxPrintDialogData();
 
     int GetFromPage() const;
@@ -180,7 +209,10 @@ public:
     bool GetSelection() const;
     bool GetCollate() const;
     bool GetPrintToFile() const;
+
+    // WXWIN_COMPATIBILITY_2_4
     bool GetSetupDialog() const;
+    void SetSetupDialog(bool flag);
 
     void SetFromPage(int v);
     void SetToPage(int v);
@@ -191,7 +223,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);
@@ -208,11 +239,6 @@ public:
 
     
     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() }
@@ -227,11 +253,16 @@ public:
 
     wxPrintDialog(wxWindow* parent, wxPrintDialogData* data = NULL);
 
-    wxPrintDialogData& GetPrintDialogData();
+    // TODO?: wxPrintDialog(wxWindow *parent, wxPrintData* data);
+    
+    virtual int ShowModal();
+
+    virtual wxPrintDialogData& GetPrintDialogData();
+    virtual wxPrintData& GetPrintData();
 
     %newobject GetPrintDC;
-    wxDC* GetPrintDC();
-    int ShowModal();
+    virtual wxDC *GetPrintDC();
+
 };
 
 
@@ -254,14 +285,16 @@ 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, wxPrintout *printout);
+    virtual void ReportError(wxWindow *parent, wxPrintout *printout, const wxString& message);
 
+    virtual bool Setup(wxWindow *parent);
+    virtual bool Print(wxWindow *parent, wxPrintout *printout, bool prompt = true);
+    virtual wxDC* PrintDialog(wxWindow *parent);
+    
+    virtual wxPrintDialogData& GetPrintDialogData() const;
+
+    bool GetAbort();
     static wxPrinterError GetLastError();
 };
 
@@ -273,7 +306,7 @@ 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 hadErr = false;
     bool found;
 
     bool blocked = wxPyBeginBlockThreads();
@@ -284,22 +317,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.");
@@ -534,30 +567,30 @@ public:
 
 %{
 
-#define DEC_PYCALLBACK_BOOL_PREWINDC(CBNAME)                                    \
-    bool CBNAME(wxPreviewCanvas* a, wxDC& b);                                   \
+#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);                               \
-            PyObject* dc  = wxPyMake_wxObject(&b);                              \
-            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 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);                                                    \
     }
 
 
@@ -747,6 +780,100 @@ public:
     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();
+// };
+
+
+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;
+};
+
+
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------