]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/print.h
wiring osx native notification during launch
[wxWidgets.git] / interface / wx / print.h
index e4516cf4564826ced5a8fb4c9f9fe4183bbb254c..ba1f43c81737947d1f9ea02de785b199390d7679 100644 (file)
@@ -3,9 +3,40 @@
 // Purpose:     interface of wxPreviewControlBar
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+enum wxPrinterError
+{
+    wxPRINTER_NO_ERROR = 0,
+    wxPRINTER_CANCELLED,
+    wxPRINTER_ERROR
+};
+
+#define wxPREVIEW_PRINT        1
+#define wxPREVIEW_PREVIOUS     2
+#define wxPREVIEW_NEXT         4
+#define wxPREVIEW_ZOOM         8
+#define wxPREVIEW_FIRST       16
+#define wxPREVIEW_LAST        32
+#define wxPREVIEW_GOTO        64
+
+#define wxPREVIEW_DEFAULT  (wxPREVIEW_PREVIOUS|wxPREVIEW_NEXT|wxPREVIEW_ZOOM\
+                            |wxPREVIEW_FIRST|wxPREVIEW_GOTO|wxPREVIEW_LAST)
+
+// Ids for controls
+#define wxID_PREVIEW_CLOSE      1
+#define wxID_PREVIEW_NEXT       2
+#define wxID_PREVIEW_PREVIOUS   3
+#define wxID_PREVIEW_PRINT      4
+#define wxID_PREVIEW_ZOOM       5
+#define wxID_PREVIEW_FIRST      6
+#define wxID_PREVIEW_LAST       7
+#define wxID_PREVIEW_GOTO       8
+#define wxID_PREVIEW_ZOOM_IN    9
+#define wxID_PREVIEW_ZOOM_OUT   10
+
+
 /**
     @class wxPreviewControlBar
 
@@ -15,7 +46,7 @@
     You can derive a new class from this and override some or all member functions
     to change the behaviour and appearance; or you can leave it as it is.
 
-    @library{wxbase}
+    @library{wxcore}
     @category{printing}
 
     @see wxPreviewFrame, wxPreviewCanvas, wxPrintPreview
@@ -89,7 +120,7 @@ public:
     A preview canvas is the default canvas used by the print preview
     system to display the preview.
 
-    @library{wxbase}
+    @library{wxcore}
     @category{printing}
 
     @see wxPreviewFrame, wxPreviewControlBar, wxPrintPreview
@@ -117,7 +148,33 @@ public:
     void OnPaint(wxPaintEvent& event);
 };
 
+/**
+    Preview frame modality kind.
+
+    The elements of this enum can be used with wxPreviewFrame::Initialize() to
+    indicate how should the preview frame be shown.
+
+    @since 2.9.2
+*/
+enum wxPreviewFrameModalityKind
+{
+    /**
+        Disable all the other top level windows while the preview frame is shown.
 
+        This is the default behaviour.
+     */
+    wxPreviewFrame_AppModal,
+
+    /**
+        Disable only the parent window while the preview frame is shown.
+     */
+    wxPreviewFrame_WindowModal,
+
+    /**
+        Show the preview frame non-modally and don't disable any other windows.
+     */
+    wxPreviewFrame_NonModal
+};
 
 /**
     @class wxPreviewFrame
@@ -126,7 +183,7 @@ public:
     Member functions may be overridden to replace functionality, or the
     class may be used without derivation.
 
-    @library{wxbase}
+    @library{wxcore}
     @category{printing}
 
     @see wxPreviewCanvas, wxPreviewControlBar, wxPrintPreview
@@ -140,12 +197,12 @@ public:
         Pass a print preview object plus other normal frame arguments.
         The print preview object will be destroyed by the frame when it closes.
     */
-    wxPreviewFrame(wxPrintPreview* preview, wxWindow* parent,
-                   const wxString& title,
+    wxPreviewFrame(wxPrintPreviewBase* preview, wxWindow* parent,
+                   const wxString& title = "Print Preview",
                    const wxPoint& pos = wxDefaultPosition,
-                   const wxSize& size size = wxDefaultSize,
+                   const wxSize& size = wxDefaultSize,
                    long style = wxDEFAULT_FRAME_STYLE,
-                   const wxString& name = "frame");
+                   const wxString& name = wxFrameNameStr);
 
     /**
         Destructor.
@@ -169,15 +226,47 @@ public:
     virtual void CreateControlBar();
 
     /**
-        Creates the preview canvas and control bar, and calls wxWindow::MakeModal(@true)
-        to disable other top-level windows in the application.
+        Initializes the frame elements and prepares for showing it.
 
-        This function should be called by the application prior to showing the frame.
-    */
+        Calling this method is equivalent to calling InitializeWithModality()
+        with wxPreviewFrame_AppModal argument, please see its documentation for
+        more details.
+
+        Please notice that this function is virtual mostly for backwards
+        compatibility only, there is no real need to override it as it's never
+        called by wxWidgets itself.
+     */
     virtual void Initialize();
 
     /**
-        Enables the other frames in the application, and deletes the print preview
+        Initializes the frame elements and prepares for showing it with the
+        given modality kind.
+
+        This method creates the frame elements by calling CreateCanvas() and
+        CreateControlBar() methods (which may be overridden to customize them)
+        and prepares to show the frame according to the value of @a kind
+        parameter:
+            - If it is wxPreviewFrame_AppModal, all the other application
+            windows will be disabled when this frame is shown. This is the same
+            behaviour as that of simple Initialize().
+            - If it is wxPreviewFrame_WindowModal, only the parent window of
+            the preview frame will be disabled when it is shown.
+            - And if it is wxPreviewFrame_NonModal, no windows at all will be
+            disabled while the preview is shown.
+
+        Notice that this function (or Initialize()) must be called by the
+        application prior to showing the frame but you still must call @c
+        Show(true) to actually show it afterwards.
+
+        @param kind
+            The modality kind of preview frame.
+
+        @since 2.9.2
+    */
+    virtual void InitializeWithModality(wxPreviewFrameModalityKind kind);
+
+    /**
+        Enables any disabled frames in the application, and deletes the print preview
         object, implicitly deleting any printout objects associated with the print
         preview object.
     */
@@ -204,7 +293,7 @@ public:
     affected. It is recommended to use native preview functionality on
     platforms that offer it (OS X, GTK+).
 
-    @library{wxbase}
+    @library{wxcore}
     @category{printing}
 
     @see @ref overview_printing, wxPrinterDC, wxPrintDialog, wxPrintout, wxPrinter,
@@ -224,15 +313,18 @@ public:
         the preview frame so that the user can print directly from the preview interface.
 
         @remarks
-        Do not explicitly delete the printout objects once this destructor has been
-        called, since they will be deleted in the wxPrintPreview constructor.
+        Do not explicitly delete the printout objects once this constructor has been
+        called, since they will be deleted in the wxPrintPreview destructor.
         The same does not apply to the @a data argument.
 
         Use IsOk() to check whether the wxPrintPreview object was created correctly.
     */
+    wxPrintPreview(wxPrintout* printout,
+                   wxPrintout* printoutForPrinting = NULL,
+                   wxPrintDialogData* data = NULL);
     wxPrintPreview(wxPrintout* printout,
                    wxPrintout* printoutForPrinting,
-                   wxPrintData* data = NULL);
+                   wxPrintData* data);
 
     /**
         Destructor.
@@ -240,7 +332,7 @@ public:
         Deletes both print preview objects, so do not destroy these objects
         in your application.
     */
-    ~wxPrinter();
+    ~wxPrintPreview();
 
     /**
         Gets the preview window used for displaying the print preview image.
@@ -295,7 +387,7 @@ public:
         The implementation simply blits the preview bitmap onto
         the canvas, creating a new preview bitmap if none exists.
     */
-    bool PaintPage(wxPreviewCanvas* canvas, wxDC dc);
+    virtual bool PaintPage(wxPreviewCanvas* canvas, wxDC& dc);
 
     /**
         Invokes the print process using the second wxPrintout object
@@ -321,7 +413,7 @@ public:
     /**
         Sets the current page to be previewed.
     */
-    void SetCurrentPage(int pageNum);
+    virtual bool SetCurrentPage(int pageNum);
 
     /**
         Sets the frame to be used for displaying the print preview canvas
@@ -352,7 +444,7 @@ public:
     but this and associated classes provide a more convenient and general method
     of printing.
 
-    @library{wxbase}
+    @library{wxcore}
     @category{printing}
 
     @see @ref overview_printing, wxPrinterDC, wxPrintDialog, wxPrintout, wxPrintPreview
@@ -373,7 +465,7 @@ public:
     /**
         Creates the default printing abort window, with a cancel button.
     */
-    void CreateAbortWindow(wxWindow* parent, wxPrintout* printout);
+    virtual wxPrintAbortDialog* CreateAbortWindow(wxWindow* parent, wxPrintout* printout);
 
     /**
         Returns @true if the user has aborted the print job.
@@ -411,8 +503,8 @@ public:
         context (current printer not set, for example) or the user cancelled printing.
         Call GetLastError() to get detailed information about the kind of the error.
     */
-    bool Print(wxWindow* parent, wxPrintout* printout,
-               bool prompt = true);
+    virtual bool Print(wxWindow* parent, wxPrintout* printout,
+                       bool prompt = true);
 
     /**
         Invokes the print dialog.
@@ -429,8 +521,8 @@ public:
     /**
         Default error-reporting function.
     */
-    void ReportError(wxWindow* parent, wxPrintout* printout,
-                     const wxString& message);
+    virtual void ReportError(wxWindow* parent, wxPrintout* printout,
+                             const wxString& message);
 
     /**
         Invokes the print setup dialog.
@@ -470,7 +562,7 @@ public:
     to create the print preview image, and to create the printed paper image, and
     achieve a common appearance to the preview image and the printed page.
 
-    @library{wxbase}
+    @library{wxcore}
     @category{printing}
 
     @see @ref overview_printing, wxPrinterDC, wxPrintDialog, wxPageSetupDialog,
@@ -583,9 +675,10 @@ public:
         Or you can just use the FitThisSizeToXXX() and MapScreenSizeToXXX routines below,
         which do most of the scaling calculations for you.
 
-        @beginWxPythonOnly
-        This method returns the output-only parameters as a tuple.
-        @endWxPythonOnly
+        @beginWxPerlOnly
+        In wxPerl this method takes no arguments and returns a
+        2-element list (w, h).
+        @endWxPerlOnly
     */
     void GetPPIPrinter(int* w, int* h) const;
 
@@ -598,9 +691,10 @@ public:
         If you are doing your own scaling, remember to multiply this by a scaling
         factor to take the preview DC size into account.
 
-        @beginWxPythonOnly
-        This method returns the output-only parameters as a tuple.
-        @endWxPythonOnly
+        @beginWxPerlOnly
+        In wxPerl this method takes no arguments and returns a
+        2-element list (w, h).
+        @endWxPerlOnly
     */
     void GetPPIScreen(int* w, int* h) const;
 
@@ -614,22 +708,17 @@ public:
 
         @a minPage must be greater than zero and @a maxPage must be greater
         than @a minPage.
-
-        @beginWxPythonOnly
-        When this method is implemented in a derived Python class, it should be designed
-        to take no parameters (other than the self reference) and to return a tuple of
-        four integers.
-        @endWxPythonOnly
     */
-    void GetPageInfo(int* minPage, int* maxPage, int* pageFrom,
-                     int* pageTo);
+    virtual void GetPageInfo(int* minPage, int* maxPage, int* pageFrom,
+                             int* pageTo);
 
     /**
         Returns the size of the printer page in millimetres.
 
-        @beginWxPythonOnly
-        This method returns the output-only parameters as a tuple.
-        @endWxPythonOnly
+        @beginWxPerlOnly
+        In wxPerl this method takes no arguments and returns a
+        2-element list (w, h).
+        @endWxPerlOnly
     */
     void GetPageSizeMM(int* w, int* h) const;
 
@@ -642,10 +731,6 @@ public:
         previewing, a memory device context is used, which uses a bitmap size reflecting
         the current preview zoom. The application must take this discrepancy into
         account if previewing is to be supported.
-
-        @beginWxPythonOnly
-        This method returns the output-only parameters as a tuple.
-        @endWxPythonOnly
     */
     void GetPageSizePixels(int* w, int* h) const;
 
@@ -688,9 +773,26 @@ public:
 
     /**
         Returns @true if the printout is currently being used for previewing.
+
+        @see GetPreview()
     */
     virtual bool IsPreview() const;
 
+    /**
+        Returns the associated preview object if any.
+
+        If this printout object is used for previewing, returns the associated
+        wxPrintPreview. Otherwise returns @NULL.
+
+        The returned pointer is not owned by the printout and must not be
+        deleted.
+
+        @see IsPreview()
+
+        @since 2.9.1.
+     */
+    wxPrintPreview *GetPreview() const;
+
     /**
         Set the user scale and device origin of the wxDC associated with this wxPrintout
         so that one screen pixel maps to one device pixel on the DC.
@@ -710,14 +812,14 @@ public:
     void MapScreenSizeToDevice();
 
     /**
-        This sets the user scale of the wxDC assocated with this wxPrintout to the same
+        This sets the user scale of the wxDC associated with this wxPrintout to the same
         scale as MapScreenSizeToPaper() but sets the logical origin to the top left corner
         of the page rectangle.
     */
     void MapScreenSizeToPage();
 
     /**
-        This sets the user scale of the wxDC assocated with this wxPrintout to the same
+        This sets the user scale of the wxDC associated with this wxPrintout to the same
         scale as MapScreenSizeToPageMargins() but sets the logical origin to the top left
         corner of the page margins specified by the given wxPageSetupDialogData object.
     */
@@ -733,7 +835,7 @@ public:
         (It will, of course, be larger or smaller in the preview image, depending on the
         zoom factor.)
 
-        Use this if you want WYSIWYG behavior, e.g., in a text editor.
+        Use this if you want WYSIWYG behaviour, e.g., in a text editor.
     */
     void MapScreenSizeToPaper();
 
@@ -751,11 +853,6 @@ public:
         @remarks
         The base OnBeginDocument() must be called (and the return value
         checked) from within the overridden function, since it calls wxDC::StartDoc().
-
-        @beginWxPythonOnly
-         If this method is overridden in a Python class then the base class version can
-         be called by using the method <tt>base_OnBeginDocument(startPage, endPage)</tt>.
-        @endWxPythonOnly
     */
     virtual bool OnBeginDocument(int startPage, int endPage);
 
@@ -799,7 +896,7 @@ public:
         Called by the framework when a page should be printed. Returning @false cancels
         the print job.
     */
-    bool OnPrintPage(int pageNum);
+    virtual bool OnPrintPage(int pageNum) = 0;
 
     /**
         Set the device origin of the associated wxDC so that the current logical point
@@ -808,3 +905,23 @@ public:
     void SetLogicalOrigin(wxCoord x, wxCoord y);
 };
 
+
+/**
+   @class wxPrintAbortDialog
+
+   The dialog created by default by the print framework that enables aborting
+   the printing process.
+ */
+class wxPrintAbortDialog: public wxDialog
+{
+public:
+    wxPrintAbortDialog(wxWindow *parent,
+                       const wxString& documentTitle,
+                       const wxPoint& pos = wxDefaultPosition,
+                       const wxSize& size = wxDefaultSize,
+                       long style = wxDEFAULT_DIALOG_STYLE,
+                       const wxString& name = "dialog");
+
+    void SetProgress(int currentPage, int totalPages,
+                     int currentCopy, int totalCopies);
+};