xref: /aoo41x/main/vcl/inc/printdlg.hxx (revision ebfcd9af)
1*ebfcd9afSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*ebfcd9afSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*ebfcd9afSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*ebfcd9afSAndrew Rist  * distributed with this work for additional information
6*ebfcd9afSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*ebfcd9afSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*ebfcd9afSAndrew Rist  * "License"); you may not use this file except in compliance
9*ebfcd9afSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*ebfcd9afSAndrew Rist  *
11*ebfcd9afSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*ebfcd9afSAndrew Rist  *
13*ebfcd9afSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*ebfcd9afSAndrew Rist  * software distributed under the License is distributed on an
15*ebfcd9afSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*ebfcd9afSAndrew Rist  * KIND, either express or implied.  See the License for the
17*ebfcd9afSAndrew Rist  * specific language governing permissions and limitations
18*ebfcd9afSAndrew Rist  * under the License.
19*ebfcd9afSAndrew Rist  *
20*ebfcd9afSAndrew Rist  *************************************************************/
21*ebfcd9afSAndrew Rist 
22*ebfcd9afSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _SV_PRNDLG_HXX
25cdf0e10cSrcweir #define _SV_PRNDLG_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <vcl/dllapi.h>
28cdf0e10cSrcweir 
29cdf0e10cSrcweir #include "print.h"
30cdf0e10cSrcweir 
31cdf0e10cSrcweir #include "vcl/print.hxx"
32cdf0e10cSrcweir #include "vcl/dialog.hxx"
33cdf0e10cSrcweir #include "vcl/fixed.hxx"
34cdf0e10cSrcweir #include "vcl/button.hxx"
35cdf0e10cSrcweir #include "vcl/gdimtf.hxx"
36cdf0e10cSrcweir #include "vcl/lstbox.hxx"
37cdf0e10cSrcweir #include "vcl/field.hxx"
38cdf0e10cSrcweir #include "vcl/tabctrl.hxx"
39cdf0e10cSrcweir #include "vcl/tabpage.hxx"
40cdf0e10cSrcweir #include "vcl/arrange.hxx"
41cdf0e10cSrcweir #include "vcl/virdev.hxx"
42cdf0e10cSrcweir 
43cdf0e10cSrcweir #include <boost/shared_ptr.hpp>
44cdf0e10cSrcweir #include <map>
45cdf0e10cSrcweir 
46cdf0e10cSrcweir namespace vcl
47cdf0e10cSrcweir {
48cdf0e10cSrcweir     class PrintDialog : public ModalDialog
49cdf0e10cSrcweir     {
50cdf0e10cSrcweir         class PrintPreviewWindow : public Window
51cdf0e10cSrcweir         {
52cdf0e10cSrcweir             GDIMetaFile         maMtf;
53cdf0e10cSrcweir             Size                maOrigSize;
54cdf0e10cSrcweir             Size                maPreviewSize;
55cdf0e10cSrcweir             VirtualDevice       maPageVDev;
56cdf0e10cSrcweir             rtl::OUString       maReplacementString;
57cdf0e10cSrcweir             rtl::OUString       maToolTipString;
58cdf0e10cSrcweir             bool                mbGreyscale;
59cdf0e10cSrcweir             FixedLine           maHorzDim;
60cdf0e10cSrcweir             FixedLine           maVertDim;
61cdf0e10cSrcweir 
62cdf0e10cSrcweir             bool useHCColorReplacement() const;
63cdf0e10cSrcweir         public:
64cdf0e10cSrcweir             PrintPreviewWindow( Window* pParent, const ResId& );
65cdf0e10cSrcweir             virtual ~PrintPreviewWindow();
66cdf0e10cSrcweir 
67cdf0e10cSrcweir             virtual void Paint( const Rectangle& rRect );
68cdf0e10cSrcweir             virtual void Command( const CommandEvent& );
69cdf0e10cSrcweir             virtual void Resize();
70cdf0e10cSrcweir             virtual void DataChanged( const DataChangedEvent& );
71cdf0e10cSrcweir 
72cdf0e10cSrcweir             void setPreview( const GDIMetaFile&, const Size& i_rPaperSize,
73cdf0e10cSrcweir                              const rtl::OUString& i_rPaperName,
74cdf0e10cSrcweir                              const rtl::OUString& i_rNoPageString,
75cdf0e10cSrcweir                              sal_Int32 i_nDPIX, sal_Int32 i_nDPIY,
76cdf0e10cSrcweir                              bool i_bGreyscale
77cdf0e10cSrcweir                             );
78cdf0e10cSrcweir         };
79cdf0e10cSrcweir 
80cdf0e10cSrcweir         class ShowNupOrderWindow : public Window
81cdf0e10cSrcweir         {
82cdf0e10cSrcweir             int mnOrderMode;
83cdf0e10cSrcweir             int mnRows;
84cdf0e10cSrcweir             int mnColumns;
85cdf0e10cSrcweir             void ImplInitSettings();
86cdf0e10cSrcweir         public:
87cdf0e10cSrcweir             ShowNupOrderWindow( Window* pParent );
88cdf0e10cSrcweir             virtual ~ShowNupOrderWindow();
89cdf0e10cSrcweir 
90cdf0e10cSrcweir             virtual void Paint( const Rectangle& );
91cdf0e10cSrcweir 
setValues(int i_nOrderMode,int i_nColumns,int i_nRows)92cdf0e10cSrcweir             void setValues( int i_nOrderMode, int i_nColumns, int i_nRows )
93cdf0e10cSrcweir             {
94cdf0e10cSrcweir                 mnOrderMode = i_nOrderMode;
95cdf0e10cSrcweir                 mnRows = i_nRows;
96cdf0e10cSrcweir                 mnColumns = i_nColumns;
97cdf0e10cSrcweir                 Invalidate();
98cdf0e10cSrcweir             }
99cdf0e10cSrcweir         };
100cdf0e10cSrcweir 
101cdf0e10cSrcweir         class NUpTabPage : public TabPage
102cdf0e10cSrcweir         {
103cdf0e10cSrcweir         public:
104cdf0e10cSrcweir             FixedLine                               maNupLine;
105cdf0e10cSrcweir             RadioButton                             maPagesBtn;
106cdf0e10cSrcweir             RadioButton                             maBrochureBtn;
107cdf0e10cSrcweir             FixedText                               maPagesBoxTitleTxt;
108cdf0e10cSrcweir             ListBox                                 maNupPagesBox;
109cdf0e10cSrcweir 
110cdf0e10cSrcweir             // controls for "Custom" page mode
111cdf0e10cSrcweir             FixedText                               maNupNumPagesTxt;
112cdf0e10cSrcweir             NumericField                            maNupColEdt;
113cdf0e10cSrcweir             FixedText                               maNupTimesTxt;
114cdf0e10cSrcweir             NumericField                            maNupRowsEdt;
115cdf0e10cSrcweir             FixedText                               maPageMarginTxt1;
116cdf0e10cSrcweir             MetricField                             maPageMarginEdt;
117cdf0e10cSrcweir             FixedText                               maPageMarginTxt2;
118cdf0e10cSrcweir             FixedText                               maSheetMarginTxt1;
119cdf0e10cSrcweir             MetricField                             maSheetMarginEdt;
120cdf0e10cSrcweir             FixedText                               maSheetMarginTxt2;
121cdf0e10cSrcweir             FixedText                               maNupOrientationTxt;
122cdf0e10cSrcweir             ListBox                                 maNupOrientationBox;
123cdf0e10cSrcweir 
124cdf0e10cSrcweir             // page order ("left to right, then down")
125cdf0e10cSrcweir             FixedText                               maNupOrderTxt;
126cdf0e10cSrcweir             ListBox                                 maNupOrderBox;
127cdf0e10cSrcweir             ShowNupOrderWindow                      maNupOrderWin;
128cdf0e10cSrcweir             // border around each page
129cdf0e10cSrcweir             CheckBox                                maBorderCB;
130cdf0e10cSrcweir 
131cdf0e10cSrcweir             boost::shared_ptr< vcl::RowOrColumn >   mxBrochureDep;
132cdf0e10cSrcweir             boost::shared_ptr< vcl::LabeledElement >mxPagesBtnLabel;
133cdf0e10cSrcweir 
134cdf0e10cSrcweir             void setupLayout();
135cdf0e10cSrcweir 
136cdf0e10cSrcweir             NUpTabPage( Window*, const ResId& );
137cdf0e10cSrcweir             virtual ~NUpTabPage();
138cdf0e10cSrcweir 
139cdf0e10cSrcweir             void readFromSettings();
140cdf0e10cSrcweir             void storeToSettings();
141cdf0e10cSrcweir             void initFromMultiPageSetup( const vcl::PrinterController::MultiPageSetup& );
142cdf0e10cSrcweir             void enableNupControls( bool bEnable );
143cdf0e10cSrcweir 
144cdf0e10cSrcweir             void showAdvancedControls( bool );
145cdf0e10cSrcweir 
146cdf0e10cSrcweir             // virtual void Resize();
147cdf0e10cSrcweir         };
148cdf0e10cSrcweir 
149cdf0e10cSrcweir         class JobTabPage : public TabPage
150cdf0e10cSrcweir         {
151cdf0e10cSrcweir         public:
152cdf0e10cSrcweir             FixedLine                               maPrinterFL;
153cdf0e10cSrcweir             ListBox                                 maPrinters;
154cdf0e10cSrcweir             DisclosureButton                        maDetailsBtn;
155cdf0e10cSrcweir             FixedText                               maStatusLabel;
156cdf0e10cSrcweir             FixedText                               maStatusTxt;
157cdf0e10cSrcweir             FixedText                               maLocationLabel;
158cdf0e10cSrcweir             FixedText                               maLocationTxt;
159cdf0e10cSrcweir             FixedText                               maCommentLabel;
160cdf0e10cSrcweir             FixedText                               maCommentTxt;
161cdf0e10cSrcweir 
162cdf0e10cSrcweir             PushButton                              maSetupButton;
163cdf0e10cSrcweir 
164cdf0e10cSrcweir             FixedLine                               maCopies;
165cdf0e10cSrcweir             FixedLine                               maCopySpacer;
166cdf0e10cSrcweir             FixedText                               maCopyCount;
167cdf0e10cSrcweir             NumericField                            maCopyCountField;
168cdf0e10cSrcweir             CheckBox                                maCollateBox;
169cdf0e10cSrcweir             FixedImage                              maCollateImage;
170cdf0e10cSrcweir             CheckBox                                maReverseOrderBox;
171cdf0e10cSrcweir 
172cdf0e10cSrcweir             Image                                   maCollateImg;
173cdf0e10cSrcweir             Image                                   maCollateHCImg;
174cdf0e10cSrcweir             Image                                   maNoCollateImg;
175cdf0e10cSrcweir             Image                                   maNoCollateHCImg;
176cdf0e10cSrcweir 
177cdf0e10cSrcweir             long                                    mnCollateUIMode;
178cdf0e10cSrcweir 
179cdf0e10cSrcweir             boost::shared_ptr<vcl::RowOrColumn>     mxPrintRange;
180cdf0e10cSrcweir             boost::shared_ptr<vcl::WindowArranger>  mxDetails;
181cdf0e10cSrcweir 
182cdf0e10cSrcweir             JobTabPage( Window*, const ResId& );
183cdf0e10cSrcweir             virtual ~JobTabPage();
184cdf0e10cSrcweir 
185cdf0e10cSrcweir             void readFromSettings();
186cdf0e10cSrcweir             void storeToSettings();
187cdf0e10cSrcweir 
188cdf0e10cSrcweir             // virtual void Resize();
189cdf0e10cSrcweir 
190cdf0e10cSrcweir             void setupLayout();
191cdf0e10cSrcweir         };
192cdf0e10cSrcweir 
193cdf0e10cSrcweir         class OutputOptPage : public TabPage
194cdf0e10cSrcweir         {
195cdf0e10cSrcweir         public:
196cdf0e10cSrcweir             FixedLine                           maOptionsLine;
197cdf0e10cSrcweir             CheckBox                            maToFileBox;
198cdf0e10cSrcweir             CheckBox                            maCollateSingleJobsBox;
199cdf0e10cSrcweir 
200cdf0e10cSrcweir             boost::shared_ptr<vcl::RowOrColumn> mxOptGroup;
201cdf0e10cSrcweir 
202cdf0e10cSrcweir             OutputOptPage( Window*, const ResId& );
203cdf0e10cSrcweir             virtual ~OutputOptPage();
204cdf0e10cSrcweir 
205cdf0e10cSrcweir             void readFromSettings();
206cdf0e10cSrcweir             void storeToSettings();
207cdf0e10cSrcweir 
208cdf0e10cSrcweir             // virtual void Resize();
209cdf0e10cSrcweir 
210cdf0e10cSrcweir             void setupLayout();
211cdf0e10cSrcweir         };
212cdf0e10cSrcweir 
213cdf0e10cSrcweir         OKButton                                maOKButton;
214cdf0e10cSrcweir         CancelButton                            maCancelButton;
215cdf0e10cSrcweir         HelpButton                              maHelpButton;
216cdf0e10cSrcweir         PrintPreviewWindow                      maPreviewWindow;
217cdf0e10cSrcweir         NumericField                            maPageEdit;
218cdf0e10cSrcweir         FixedText                               maNumPagesText;
219cdf0e10cSrcweir         PushButton                              maBackwardBtn;
220cdf0e10cSrcweir         PushButton                              maForwardBtn;
221cdf0e10cSrcweir 
222cdf0e10cSrcweir         TabControl                              maTabCtrl;
223cdf0e10cSrcweir         NUpTabPage                              maNUpPage;
224cdf0e10cSrcweir         JobTabPage                              maJobPage;
225cdf0e10cSrcweir         OutputOptPage                           maOptionsPage;
226cdf0e10cSrcweir 
227cdf0e10cSrcweir         FixedLine                               maButtonLine;
228cdf0e10cSrcweir 
229cdf0e10cSrcweir         boost::shared_ptr< PrinterController >  maPController;
230cdf0e10cSrcweir 
231cdf0e10cSrcweir         rtl::OUString                           maPageStr;
232cdf0e10cSrcweir         rtl::OUString                           maNoPageStr;
233cdf0e10cSrcweir         sal_Int32                               mnCurPage;
234cdf0e10cSrcweir         sal_Int32                               mnCachedPages;
235cdf0e10cSrcweir 
236cdf0e10cSrcweir         std::list< Window* >                    maControls;
237cdf0e10cSrcweir         std::map< Window*, rtl::OUString >      maControlToPropertyMap;
238cdf0e10cSrcweir         std::map< rtl::OUString, std::vector< Window* > >
239cdf0e10cSrcweir                                                 maPropertyToWindowMap;
240cdf0e10cSrcweir         std::map< Window*, sal_Int32 >          maControlToNumValMap;
241cdf0e10cSrcweir         std::set< rtl::OUString >               maReverseDependencySet;
242cdf0e10cSrcweir 
243cdf0e10cSrcweir         Size                                    maNupPortraitSize;
244cdf0e10cSrcweir         Size                                    maNupLandscapeSize;
245cdf0e10cSrcweir 
246cdf0e10cSrcweir         // internal, used for automatic Nup-Portrait/landscape
247cdf0e10cSrcweir         Size                                    maFirstPageSize;
248cdf0e10cSrcweir 
249cdf0e10cSrcweir         rtl::OUString                           maPrintToFileText;
250cdf0e10cSrcweir         rtl::OUString                           maPrintText;
251cdf0e10cSrcweir         rtl::OUString                           maDefPrtText;
252cdf0e10cSrcweir 
253cdf0e10cSrcweir         boost::shared_ptr<vcl::RowOrColumn>     mxPreviewCtrls;
254cdf0e10cSrcweir 
255cdf0e10cSrcweir         Size                                    maDetailsCollapsedSize;
256cdf0e10cSrcweir         Size                                    maDetailsExpandedSize;
257cdf0e10cSrcweir 
258cdf0e10cSrcweir         sal_Bool                                mbShowLayoutPage;
259cdf0e10cSrcweir 
260cdf0e10cSrcweir         Size getJobPageSize();
261cdf0e10cSrcweir         void updateNup();
262cdf0e10cSrcweir         void updateNupFromPages();
263cdf0e10cSrcweir         void preparePreview( bool i_bPrintChanged = true, bool i_bMayUseCache = false );
264cdf0e10cSrcweir         void setPreviewText( sal_Int32 );
265cdf0e10cSrcweir         void updatePrinterText();
266cdf0e10cSrcweir         void checkControlDependencies();
267cdf0e10cSrcweir         void checkOptionalControlDependencies();
268cdf0e10cSrcweir         void makeEnabled( Window* );
269cdf0e10cSrcweir         void updateWindowFromProperty( const rtl::OUString& );
270cdf0e10cSrcweir         void setupOptionalUI();
271cdf0e10cSrcweir         void readFromSettings();
272cdf0e10cSrcweir         void storeToSettings();
273cdf0e10cSrcweir         com::sun::star::beans::PropertyValue* getValueForWindow( Window* ) const;
274cdf0e10cSrcweir 
275cdf0e10cSrcweir         virtual void Resize();
276cdf0e10cSrcweir         virtual void Command( const CommandEvent& );
277cdf0e10cSrcweir         virtual void DataChanged( const DataChangedEvent& );
278cdf0e10cSrcweir 
279cdf0e10cSrcweir         DECL_LINK( SelectHdl, ListBox* );
280cdf0e10cSrcweir         DECL_LINK( ClickHdl, Button* );
281cdf0e10cSrcweir         DECL_LINK( ModifyHdl, Edit* );
282cdf0e10cSrcweir         DECL_LINK( UIOptionsChanged, void* );
283cdf0e10cSrcweir 
284cdf0e10cSrcweir         DECL_LINK( UIOption_CheckHdl, CheckBox* );
285cdf0e10cSrcweir         DECL_LINK( UIOption_RadioHdl, RadioButton* );
286cdf0e10cSrcweir         DECL_LINK( UIOption_SelectHdl, ListBox* );
287cdf0e10cSrcweir         DECL_LINK( UIOption_ModifyHdl, Edit* );
288cdf0e10cSrcweir 
289cdf0e10cSrcweir         void setupLayout();
290cdf0e10cSrcweir     public:
291cdf0e10cSrcweir         PrintDialog( Window*, const boost::shared_ptr< PrinterController >& );
292cdf0e10cSrcweir         virtual ~PrintDialog();
293cdf0e10cSrcweir 
294cdf0e10cSrcweir         bool isPrintToFile();
295cdf0e10cSrcweir         int getCopyCount();
296cdf0e10cSrcweir         bool isCollate();
297cdf0e10cSrcweir         bool isSingleJobs();
298cdf0e10cSrcweir 
299cdf0e10cSrcweir         void previewForward();
300cdf0e10cSrcweir         void previewBackward();
301cdf0e10cSrcweir     };
302cdf0e10cSrcweir 
303cdf0e10cSrcweir     class PrintProgressDialog : public ModelessDialog
304cdf0e10cSrcweir     {
305cdf0e10cSrcweir         String              maStr;
306cdf0e10cSrcweir         FixedText           maText;
307cdf0e10cSrcweir         CancelButton        maButton;
308cdf0e10cSrcweir 
309cdf0e10cSrcweir         bool                mbCanceled;
310cdf0e10cSrcweir         sal_Int32           mnCur;
311cdf0e10cSrcweir         sal_Int32           mnMax;
312cdf0e10cSrcweir         long                mnProgressHeight;
313cdf0e10cSrcweir         Rectangle           maProgressRect;
314cdf0e10cSrcweir         bool                mbNativeProgress;
315cdf0e10cSrcweir 
316cdf0e10cSrcweir         DECL_LINK( ClickHdl, Button* );
317cdf0e10cSrcweir 
318cdf0e10cSrcweir         void implCalcProgressRect();
319cdf0e10cSrcweir     public:
320cdf0e10cSrcweir         PrintProgressDialog( Window* i_pParent, int i_nMax );
321cdf0e10cSrcweir         ~PrintProgressDialog();
322cdf0e10cSrcweir 
isCanceled() const323cdf0e10cSrcweir         bool isCanceled() const { return mbCanceled; }
324cdf0e10cSrcweir         void setProgress( int i_nCurrent, int i_nMax = -1 );
325cdf0e10cSrcweir         void tick();
326cdf0e10cSrcweir         void reset();
327cdf0e10cSrcweir 
328cdf0e10cSrcweir         virtual void Paint( const Rectangle& );
329cdf0e10cSrcweir     };
330cdf0e10cSrcweir }
331cdf0e10cSrcweir 
332cdf0e10cSrcweir 
333cdf0e10cSrcweir #endif // _SV_PRNDLG_HXX
334