office-gobmx/vcl/inc/printdlg.hxx

338 lines
12 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef _SV_PRNDLG_HXX
#define _SV_PRNDLG_HXX
#include <vcl/dllapi.h>
#include "print.h"
#include "vcl/print.hxx"
#include "vcl/dialog.hxx"
#include "vcl/fixed.hxx"
#include "vcl/button.hxx"
#include "vcl/gdimtf.hxx"
#include "vcl/lstbox.hxx"
#include "vcl/field.hxx"
#include "vcl/tabctrl.hxx"
#include "vcl/tabpage.hxx"
#include "vcl/arrange.hxx"
2009-07-24 08:15:45 -05:00
#include "vcl/virdev.hxx"
#include <boost/shared_ptr.hpp>
#include <map>
namespace vcl
{
class PrintDialog : public ModalDialog
{
class PrintPreviewWindow : public Window
{
GDIMetaFile maMtf;
2009-07-24 08:15:45 -05:00
Size maOrigSize;
Size maPreviewSize;
2009-07-24 08:15:45 -05:00
VirtualDevice maPageVDev;
2009-08-11 10:50:07 -05:00
rtl::OUString maReplacementString;
rtl::OUString maToolTipString;
bool mbGreyscale;
FixedLine maHorzDim;
FixedLine maVertDim;
public:
PrintPreviewWindow( Window* pParent, const ResId& );
virtual ~PrintPreviewWindow();
virtual void Paint( const Rectangle& rRect );
virtual void Command( const CommandEvent& );
2009-07-24 08:15:45 -05:00
virtual void Resize();
virtual void DataChanged( const DataChangedEvent& );
void setPreview( const GDIMetaFile&, const Size& i_rPaperSize,
const rtl::OUString& i_rPaperName,
const rtl::OUString& i_rNoPageString,
sal_Int32 i_nDPIX, sal_Int32 i_nDPIY,
bool i_bGreyscale
2009-08-13 10:10:43 -05:00
);
};
2009-07-30 08:52:50 -05:00
class ShowNupOrderWindow : public Window
{
int mnOrderMode;
int mnRows;
int mnColumns;
void ImplInitSettings();
public:
ShowNupOrderWindow( Window* pParent );
virtual ~ShowNupOrderWindow();
virtual void Paint( const Rectangle& );
void setValues( int i_nOrderMode, int i_nColumns, int i_nRows )
{
mnOrderMode = i_nOrderMode;
mnRows = i_nRows;
mnColumns = i_nColumns;
Invalidate();
}
};
class NUpTabPage : public TabPage
{
public:
2009-03-28 03:52:14 -05:00
FixedLine maNupLine;
2009-08-01 10:16:11 -05:00
RadioButton maPagesBtn;
2009-08-03 06:26:33 -05:00
RadioButton maBrochureBtn;
FixedText maPagesBoxTitleTxt;
2009-07-27 12:10:15 -05:00
ListBox maNupPagesBox;
// controls for "Custom" page mode
FixedText maNupNumPagesTxt;
2009-03-28 03:52:14 -05:00
NumericField maNupColEdt;
2009-07-27 12:10:15 -05:00
FixedText maNupTimesTxt;
NumericField maNupRowsEdt;
FixedText maPageMarginTxt1;
2009-07-27 12:10:15 -05:00
MetricField maPageMarginEdt;
FixedText maPageMarginTxt2;
FixedText maSheetMarginTxt1;
2009-07-27 12:10:15 -05:00
MetricField maSheetMarginEdt;
FixedText maSheetMarginTxt2;
2009-07-27 12:10:15 -05:00
FixedText maNupOrientationTxt;
ListBox maNupOrientationBox;
// page order ("left to right, then down")
FixedText maNupOrderTxt;
ListBox maNupOrderBox;
2009-07-30 08:52:50 -05:00
ShowNupOrderWindow maNupOrderWin;
2009-07-27 12:10:15 -05:00
// border around each page
2009-06-09 13:58:38 -05:00
CheckBox maBorderCB;
2009-07-27 12:10:15 -05:00
2009-08-01 10:16:11 -05:00
boost::shared_ptr< vcl::RowOrColumn > mxBrochureDep;
boost::shared_ptr< vcl::LabeledElement >mxPagesBtnLabel;
2009-07-27 12:10:15 -05:00
void setupLayout();
2009-06-09 13:58:38 -05:00
NUpTabPage( Window*, const ResId& );
virtual ~NUpTabPage();
2009-06-02 06:37:36 -05:00
void readFromSettings();
void storeToSettings();
void initFromMultiPageSetup( const vcl::PrinterController::MultiPageSetup& );
2009-08-01 10:16:11 -05:00
void enableNupControls( bool bEnable );
2009-06-18 13:26:15 -05:00
void showAdvancedControls( bool );
// virtual void Resize();
};
class JobTabPage : public TabPage
{
public:
2009-07-22 12:16:34 -05:00
FixedLine maPrinterFL;
ListBox maPrinters;
2009-09-08 14:48:08 -05:00
DisclosureButton maDetailsBtn;
2009-07-22 12:16:34 -05:00
FixedText maStatusLabel;
FixedText maStatusTxt;
FixedText maLocationLabel;
FixedText maLocationTxt;
FixedText maCommentLabel;
FixedText maCommentTxt;
PushButton maSetupButton;
FixedLine maCopies;
2009-07-22 12:16:34 -05:00
FixedLine maCopySpacer;
FixedText maCopyCount;
NumericField maCopyCountField;
CheckBox maCollateBox;
FixedImage maCollateImage;
CheckBox maReverseOrderBox;
Image maCollateImg;
Image maNoCollateImg;
long mnCollateUIMode;
2009-07-22 12:16:34 -05:00
boost::shared_ptr<vcl::RowOrColumn> mxPrintRange;
2009-07-27 13:42:13 -05:00
boost::shared_ptr<vcl::WindowArranger> mxDetails;
2009-07-22 12:16:34 -05:00
JobTabPage( Window*, const ResId& );
virtual ~JobTabPage();
2009-06-02 06:37:36 -05:00
void readFromSettings();
void storeToSettings();
2009-07-22 12:16:34 -05:00
// virtual void Resize();
2009-07-22 12:16:34 -05:00
void setupLayout();
};
class OutputOptPage : public TabPage
{
public:
FixedLine maOptionsLine;
CheckBox maToFileBox;
CheckBox maCollateSingleJobsBox;
2009-07-28 14:01:04 -05:00
boost::shared_ptr<vcl::RowOrColumn> mxOptGroup;
2009-07-23 12:22:34 -05:00
2009-07-22 12:16:34 -05:00
OutputOptPage( Window*, const ResId& );
virtual ~OutputOptPage();
void readFromSettings();
void storeToSettings();
2009-07-23 12:22:34 -05:00
// virtual void Resize();
2009-07-23 12:22:34 -05:00
void setupLayout();
};
TabControl maTabCtrl;
NUpTabPage maNUpPage;
JobTabPage maJobPage;
OutputOptPage maOptionsPage;
PrintPreviewWindow maPreviewWindow;
NumericField maPageEdit;
FixedText maNumPagesText;
PushButton maBackwardBtn;
PushButton maForwardBtn;
FixedLine maButtonLine;
OKButton maOKButton;
CancelButton maCancelButton;
HelpButton maHelpButton;
boost::shared_ptr< PrinterController > maPController;
rtl::OUString maPageStr;
2009-03-26 13:00:43 -05:00
rtl::OUString maNoPageStr;
sal_Int32 mnCurPage;
sal_Int32 mnCachedPages;
std::list< Window* > maControls;
std::map< Window*, rtl::OUString > maControlToPropertyMap;
std::map< rtl::OUString, std::vector< Window* > >
maPropertyToWindowMap;
std::map< Window*, sal_Int32 > maControlToNumValMap;
std::set< rtl::OUString > maReverseDependencySet;
2009-03-28 03:52:14 -05:00
Size maNupPortraitSize;
Size maNupLandscapeSize;
2009-07-27 12:10:15 -05:00
// internal, used for automatic Nup-Portrait/landscape
Size maFirstPageSize;
2009-07-22 12:16:34 -05:00
rtl::OUString maPrintToFileText;
rtl::OUString maPrintText;
2009-08-26 10:46:13 -05:00
rtl::OUString maDefPrtText;
boost::shared_ptr<vcl::RowOrColumn> mxPreviewCtrls;
2009-09-08 11:05:37 -05:00
Size maDetailsCollapsedSize;
Size maDetailsExpandedSize;
sal_Bool mbShowLayoutPage;
2009-07-27 12:10:15 -05:00
Size getJobPageSize();
2009-03-28 03:52:14 -05:00
void updateNup();
2009-08-03 06:26:33 -05:00
void updateNupFromPages();
2009-06-10 12:21:10 -05:00
void preparePreview( bool i_bPrintChanged = true, bool i_bMayUseCache = false );
void setPreviewText( sal_Int32 );
void updatePrinterText();
void checkControlDependencies();
void checkOptionalControlDependencies();
void makeEnabled( Window* );
void updateWindowFromProperty( const rtl::OUString& );
void setupOptionalUI();
2009-06-02 06:37:36 -05:00
void readFromSettings();
void storeToSettings();
com::sun::star::beans::PropertyValue* getValueForWindow( Window* ) const;
2009-03-17 07:27:26 -05:00
virtual void Resize();
virtual void Command( const CommandEvent& );
virtual void DataChanged( const DataChangedEvent& );
2009-03-17 07:27:26 -05:00
DECL_LINK( SelectHdl, ListBox* );
DECL_LINK( ClickHdl, Button* );
DECL_LINK( ModifyHdl, Edit* );
DECL_LINK( UIOptionsChanged, void* );
DECL_LINK( UIOption_CheckHdl, CheckBox* );
DECL_LINK( UIOption_RadioHdl, RadioButton* );
DECL_LINK( UIOption_SelectHdl, ListBox* );
2009-03-16 12:48:45 -05:00
DECL_LINK( UIOption_ModifyHdl, Edit* );
2009-07-24 08:15:45 -05:00
void setupLayout();
public:
PrintDialog( Window*, const boost::shared_ptr< PrinterController >& );
virtual ~PrintDialog();
bool isPrintToFile();
bool isCollate();
bool isSingleJobs();
void previewForward();
void previewBackward();
};
2009-03-18 09:46:10 -05:00
class PrintProgressDialog : public ModelessDialog
{
String maStr;
FixedText maText;
CancelButton maButton;
bool mbCanceled;
sal_Int32 mnCur;
sal_Int32 mnMax;
2009-03-18 11:16:06 -05:00
long mnProgressHeight;
2009-03-18 09:46:10 -05:00
Rectangle maProgressRect;
2009-03-18 11:16:06 -05:00
bool mbNativeProgress;
2009-03-18 09:46:10 -05:00
DECL_LINK( ClickHdl, Button* );
void implCalcProgressRect();
public:
PrintProgressDialog( Window* i_pParent, int i_nMax );
~PrintProgressDialog();
bool isCanceled() const { return mbCanceled; }
2009-03-18 09:46:10 -05:00
void setProgress( int i_nCurrent, int i_nMax = -1 );
void tick();
void reset();
2009-03-18 09:46:10 -05:00
virtual void Paint( const Rectangle& );
};
}
#endif // _SV_PRNDLG_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */