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