]>
git.saurik.com Git - wxWidgets.git/blob - src/osx/printdlg_osx.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/osx/printdlg_osx.cpp
3 // Purpose: wxPrintDialog, wxPageSetupDialog
4 // Author: Stefan Csomor
7 // Copyright: (c) Stefan Csomor
8 // Licence: wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
11 #include "wx/wxprec.h"
13 #if wxUSE_PRINTING_ARCHITECTURE
15 #include "wx/printdlg.h"
18 #include "wx/object.h"
19 #include "wx/dcprint.h"
20 #include "wx/msgdlg.h"
21 #include "wx/textctrl.h"
23 #include "wx/stattext.h"
26 #include "wx/osx/printdlg.h"
27 #include "wx/osx/private/print.h"
28 #include "wx/osx/private.h"
29 #include "wx/statline.h"
32 IMPLEMENT_DYNAMIC_CLASS ( wxMacPrintDialog
, wxPrintDialogBase
)
34 wxMacPrintDialog :: wxMacPrintDialog ()
36 m_dialogParent
= NULL
;
41 wxMacPrintDialog :: wxMacPrintDialog ( wxWindow
* p
, wxPrintDialogData
* data
)
46 wxMacPrintDialog :: wxMacPrintDialog ( wxWindow
* p
, wxPrintData
* data
)
48 wxPrintDialogData data2
;
55 bool wxMacPrintDialog :: Create ( wxWindow
* p
, wxPrintDialogData
* data
)
62 m_printDialogData
= * data
;
67 wxMacPrintDialog ::~ wxMacPrintDialog ()
71 wxDELETE ( m_printerDC
);
75 wxDC
* wxMacPrintDialog :: GetPrintDC ()
77 return new wxPrinterDC ( m_printDialogData
. GetPrintData () );
80 IMPLEMENT_CLASS ( wxMacPageSetupDialog
, wxPageSetupDialogBase
)
82 wxMacPageSetupDialog :: wxMacPageSetupDialog ( wxWindow
* p
, wxPageSetupDialogData
* data
)
83 : wxPageSetupDialogBase ()
88 bool wxMacPageSetupDialog :: Create ( wxWindow
* p
, wxPageSetupDialogData
* data
)
93 m_pageSetupData
= (* data
);
98 wxMacPageSetupDialog ::~ wxMacPageSetupDialog ()
102 wxPageSetupDialogData
& wxMacPageSetupDialog :: GetPageSetupDialogData ()
104 return m_pageSetupData
;
107 IMPLEMENT_CLASS ( wxMacPageMarginsDialog
, wxDialog
)
109 wxMacPageMarginsDialog :: wxMacPageMarginsDialog ( wxFrame
* parent
, wxPageSetupDialogData
* data
) :
110 wxDialog ( parent
, wxID_ANY
, wxString ( wxT ( "Page Margins" ))),
111 m_pageSetupDialogData ( data
)
114 wxBoxSizer
* colSizer
= new wxBoxSizer ( wxVERTICAL
);
115 wxFlexGridSizer
* gridSizer
= new wxFlexGridSizer ( 4 , 5 , 5 );
116 colSizer
-> Add ( gridSizer
, wxSizerFlags (). Border ( wxALL
, 5 ));
117 gridSizer
-> Add ( new wxStaticText ( this , wxID_ANY
, wxT ( "Left (mm):" )), wxSizerFlags (). Right ());
118 gridSizer
-> Add ( m_LeftMargin
= new wxTextCtrl ( this , wxID_ANY
), wxSizerFlags (). Left ());
119 gridSizer
-> Add ( new wxStaticText ( this , wxID_ANY
, wxT ( "Top (mm):" )), wxSizerFlags (). Right ());
120 gridSizer
-> Add ( m_TopMargin
= new wxTextCtrl ( this , wxID_ANY
), wxSizerFlags (). Left ());
121 gridSizer
-> Add ( new wxStaticText ( this , wxID_ANY
, wxT ( "Right (mm):" )), wxSizerFlags (). Right ());
122 gridSizer
-> Add ( m_RightMargin
= new wxTextCtrl ( this , wxID_ANY
), wxSizerFlags (). Left ());
123 gridSizer
-> Add ( new wxStaticText ( this , wxID_ANY
, wxT ( "Bottom (mm):" )), wxSizerFlags (). Right ());
124 gridSizer
-> Add ( m_BottomMargin
= new wxTextCtrl ( this , wxID_ANY
), wxSizerFlags (). Left ());
125 colSizer
-> Add ( new wxStaticLine ( this ), wxSizerFlags (). Expand (). Border ( wxTOP
| wxBOTTOM
, 5 ));
126 colSizer
-> Add ( CreateButtonSizer ( wxOK
| wxCANCEL
), wxSizerFlags (). Expand (). Border ( wxALL
, 5 ));
128 SetSizerAndFit ( colSizer
);
132 bool wxMacPageMarginsDialog :: TransferToWindow ()
134 wxASSERT ( m_pageSetupDialogData
);
135 wxPoint topLeft
= m_pageSetupDialogData
-> GetMarginTopLeft ();
136 wxPoint bottomRight
= m_pageSetupDialogData
-> GetMarginBottomRight ();
137 wxPoint minTopLeft
= m_pageSetupDialogData
-> GetMinMarginTopLeft ();
138 wxPoint minBottomRight
= m_pageSetupDialogData
-> GetMinMarginBottomRight ();
139 m_LeftMargin
-> SetValue ( wxString :: Format ( wxT ( " %d " ), wxMax ( topLeft
. x
, minTopLeft
. x
)));
140 m_LeftMargin
-> SetSelection (- 1 , - 1 );
141 m_TopMargin
-> SetValue ( wxString :: Format ( wxT ( " %d " ), wxMax ( topLeft
. y
, minTopLeft
. y
)));
142 m_TopMargin
-> SetSelection (- 1 , - 1 );
143 m_RightMargin
-> SetValue ( wxString :: Format ( wxT ( " %d " ), wxMax ( bottomRight
. x
, minBottomRight
. x
)));
144 m_RightMargin
-> SetSelection (- 1 , - 1 );
145 m_BottomMargin
-> SetValue ( wxString :: Format ( wxT ( " %d " ), wxMax ( bottomRight
. y
, minBottomRight
. y
)));
146 m_BottomMargin
-> SetSelection (- 1 , - 1 );
147 m_LeftMargin
-> SetFocus ();
151 bool wxMacPageMarginsDialog :: TransferDataFromWindow ()
153 wxPoint topLeft
, bottomRight
;
154 if (! CheckValue ( m_LeftMargin
, & topLeft
. x
, m_MinMarginTopLeft
. x
, wxT ( "left margin" ))) return false ;
155 if (! CheckValue ( m_TopMargin
, & topLeft
. y
, m_MinMarginTopLeft
. y
, wxT ( "top margin" ))) return false ;
156 if (! CheckValue ( m_RightMargin
, & bottomRight
. x
, m_MinMarginBottomRight
. x
, wxT ( "right margin" ))) return false ;
157 if (! CheckValue ( m_BottomMargin
, & bottomRight
. y
, m_MinMarginBottomRight
. y
, wxT ( "bottom margin" ))) return false ;
158 m_pageSetupDialogData
-> SetMarginTopLeft ( topLeft
);
159 m_pageSetupDialogData
-> SetMarginBottomRight ( bottomRight
);
163 bool wxMacPageMarginsDialog :: CheckValue ( wxTextCtrl
* textCtrl
, int * value
, int minValue
, const wxString
& name
)
166 if (! textCtrl
-> GetValue (). ToLong (& lvalue
))
168 wxMessageBox ( wxString :: Format ( wxT ( "Sorry, \" %s \" is not a valid numerical value for the %s " ), textCtrl
-> GetValue (). c_str (), name
. c_str ()), wxT ( "Page Margin Error" ));
171 if ( lvalue
< minValue
)
173 wxMessageBox ( wxString :: Format ( wxT ( "Sorry, \" %s \" is not a valid value for the %s , which must be >= %d " ), textCtrl
-> GetValue (). c_str (), name
. c_str (), minValue
), wxT ( "Page Margin Error" ));
174 textCtrl
-> SetValue ( wxString :: Format ( wxT ( " %d " ), minValue
));
175 textCtrl
-> SetSelection (- 1 , - 1 );
176 textCtrl
-> SetFocus ();
179 * value
= int ( lvalue
);
183 void wxMacPageMarginsDialog :: GetMinMargins ()
185 m_MinMarginTopLeft
= m_pageSetupDialogData
-> GetMinMarginTopLeft ();
186 m_MinMarginBottomRight
= m_pageSetupDialogData
-> GetMinMarginBottomRight ();