+//---------------------------------------------------------------------------
+// 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;
+};
+
+