--
cgit
--
cgit
--
cgit
--
cgit
--
cgit
--
cgit
--
cgit
--
cgit
--
cgit
--
cgit
--
cgit
--
cgit
--
cgit
--
cgit
From 3fe191743aa65ac3f37b36a4f1e180f59d4ca34b Mon Sep 17 00:00:00 2001
From: Jens-Heiner Rechtien
Date: Tue, 30 Sep 2008 16:32:45 +0000
Subject: #i10000#: set executable property
---
solenv/bin/cws | 0
1 file changed, 0 insertions(+), 0 deletions(-)
mode change 100644 => 100755 solenv/bin/cws
diff --git a/solenv/bin/cws b/solenv/bin/cws
old mode 100644
new mode 100755
--
cgit
From 91d8ce3ea93f43360addbf52701a46d091e152c8 Mon Sep 17 00:00:00 2001
From: Philipp Lohmann
Date: Wed, 1 Oct 2008 18:22:22 +0000
Subject: #i92516# migrate CWS printerpullpages to svn
---
vcl/aqua/inc/aquaprintview.h | 9 +-
vcl/aqua/inc/salprn.h | 18 +-
vcl/aqua/source/gdi/aquaprintview.mm | 10 +-
vcl/aqua/source/gdi/salprn.cxx | 119 +++++-----
vcl/inc/vcl/print.h | 13 +-
vcl/inc/vcl/print.hxx | 92 ++++++--
vcl/inc/vcl/prndlg.hxx | 127 +++++++++--
vcl/inc/vcl/salprn.hxx | 6 +-
vcl/inc/vcl/svdata.hxx | 3 +-
vcl/inc/vcl/svids.hrc | 43 +++-
vcl/prj/d.lst | 1 -
vcl/source/app/salvtables.cxx | 2 +-
vcl/source/app/svdata.cxx | 11 +-
vcl/source/gdi/impprn.cxx | 4 +-
vcl/source/gdi/makefile.mk | 4 +-
vcl/source/gdi/print.cxx | 4 +-
vcl/source/gdi/print3.cxx | 408 +++++++++++++++++++++++++++++++++++
vcl/source/src/makefile.mk | 5 +-
vcl/source/src/print.src | 247 +++++++++++++++++++++
vcl/source/src/stdtext.src | 7 +-
vcl/source/window/makefile.mk | 3 +-
vcl/source/window/printdlg.cxx | 405 ++++++++++++++++++++++++++++++++++
22 files changed, 1413 insertions(+), 128 deletions(-)
create mode 100644 vcl/source/gdi/print3.cxx
create mode 100644 vcl/source/src/print.src
create mode 100644 vcl/source/window/printdlg.cxx
diff --git a/vcl/aqua/inc/aquaprintview.h b/vcl/aqua/inc/aquaprintview.h
index c5ce20c17425..f879936d1435 100755
--- a/vcl/aqua/inc/aquaprintview.h
+++ b/vcl/aqua/inc/aquaprintview.h
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: aquaprintview.h,v $
- * $Revision: 1.3 $
+ * $Revision: 1.3.114.1 $
*
* This file is part of OpenOffice.org.
*
@@ -37,13 +37,14 @@
class ImplQPrinter;
class AquaSalInfoPrinter;
+namespace vcl { class PrinterListener; }
@interface AquaPrintView : NSView
{
- ImplQPrinter* mpQPrinter;
- AquaSalInfoPrinter* mpInfoPrinter;
+ vcl::PrinterListener* mpListener;
+ AquaSalInfoPrinter* mpInfoPrinter;
}
--(id)initWithQPrinter: (ImplQPrinter*)pPrinter withInfoPrinter: (AquaSalInfoPrinter*)pInfoPrinter;
+-(id)initWithListener: (vcl::PrinterListener*)pListener withInfoPrinter: (AquaSalInfoPrinter*)pInfoPrinter;
-(MacOSBOOL)knowsPageRange: (NSRangePointer)range;
-(NSRect)rectForPage: (int)page;
-(NSPoint)locationOfPrintRect: (NSRect)aRect;
diff --git a/vcl/aqua/inc/salprn.h b/vcl/aqua/inc/salprn.h
index ec08261e8321..8bfa8ac98cae 100644
--- a/vcl/aqua/inc/salprn.h
+++ b/vcl/aqua/inc/salprn.h
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: salprn.h,v $
- * $Revision: 1.12 $
+ * $Revision: 1.12.56.1 $
*
* This file is part of OpenOffice.org.
*
@@ -104,10 +104,10 @@ class AquaSalInfoPrinter : public SalInfoPrinter
// so let's make AquaSalPrinter just a forwarder to AquaSalInfoPrinter
// and concentrate the real work in one class
// implement pull model print system
- BOOL StartJob( const String* pFileName,
- const String& rAppName,
- ImplJobSetup* pSetupData,
- ImplQPrinter* pQPrinter,
+ BOOL StartJob( const String* i_pFileName,
+ const String& i_rAppName,
+ ImplJobSetup* i_pSetupData,
+ vcl::PrinterListener& i_rListener,
bool bIsQuickJob );
BOOL EndJob();
BOOL AbortJob();
@@ -142,10 +142,10 @@ class AquaSalPrinter : public SalPrinter
ULONG i_nCopies, BOOL i_bCollate,
ImplJobSetup* i_pSetupData );
// implement pull model print system
- virtual BOOL StartJob( const String* pFileName,
- const String& rAppName,
- ImplJobSetup* pSetupData,
- ImplQPrinter* pQPrinter );
+ virtual BOOL StartJob( const String* i_pFileName,
+ const String& i_rAppName,
+ ImplJobSetup* i_pSetupData,
+ vcl::PrinterListener& i_rListener );
virtual BOOL EndJob();
virtual BOOL AbortJob();
diff --git a/vcl/aqua/source/gdi/aquaprintview.mm b/vcl/aqua/source/gdi/aquaprintview.mm
index 6099fbaed741..79efb9c80941 100755
--- a/vcl/aqua/source/gdi/aquaprintview.mm
+++ b/vcl/aqua/source/gdi/aquaprintview.mm
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: aquaprintview.mm,v $
- * $Revision: 1.5 $
+ * $Revision: 1.5.56.1 $
*
* This file is part of OpenOffice.org.
*
@@ -33,15 +33,15 @@
#include "aquaprintview.h"
#include "salprn.h"
-#include "vcl/impprn.hxx"
+#include "vcl/print.hxx"
@implementation AquaPrintView
--(id)initWithQPrinter: (ImplQPrinter*)pPrinter withInfoPrinter: (AquaSalInfoPrinter*)pInfoPrinter
+-(id)initWithListener: (vcl::PrinterListener*)pListener withInfoPrinter: (AquaSalInfoPrinter*)pInfoPrinter
{
NSRect aRect = { { 0, 0 }, [pInfoPrinter->getPrintInfo() paperSize] };
if( (self = [super initWithFrame: aRect]) != nil )
{
- mpQPrinter = pPrinter;
+ mpListener = pListener;
mpInfoPrinter = pInfoPrinter;
}
return self;
@@ -76,6 +76,6 @@
int nPage = (int)(aPaperSize.width * rect.origin.y + rect.origin.x);
// page count is 1 based
- mpQPrinter->PrintPage( nPage-1 + mpInfoPrinter->getCurPageRangeStart() );
+ mpListener->printFilteredPage( nPage-1 );
}
@end
diff --git a/vcl/aqua/source/gdi/salprn.cxx b/vcl/aqua/source/gdi/salprn.cxx
index 0bbc190de546..09227c549874 100644
--- a/vcl/aqua/source/gdi/salprn.cxx
+++ b/vcl/aqua/source/gdi/salprn.cxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: salprn.cxx,v $
- * $Revision: 1.16 $
+ * $Revision: 1.16.56.2 $
*
* This file is part of OpenOffice.org.
*
@@ -125,8 +125,8 @@ void AquaSalInfoPrinter::SetupPrinterGraphics( CGContextRef i_rContext ) const
if( mePageOrientation == ORIENTATION_PORTRAIT )
{
double dX = 0, dY = aPaperSize.height;
- dX += [mpPrintInfo leftMargin];
- dY -= [mpPrintInfo topMargin];
+ // dX += [mpPrintInfo leftMargin];
+ // dY -= [mpPrintInfo topMargin];
CGContextTranslateCTM( i_rContext, dX + mnStartPageOffsetX, dY - mnStartPageOffsetY );
CGContextScaleCTM( i_rContext, 0.1, -0.1 );
}
@@ -134,8 +134,8 @@ void AquaSalInfoPrinter::SetupPrinterGraphics( CGContextRef i_rContext ) const
{
CGContextRotateCTM( i_rContext, M_PI/2 );
double dX = aPaperSize.height, dY = -aPaperSize.width;
- dY += [mpPrintInfo topMargin];
- dX -= [mpPrintInfo rightMargin];
+ // dY += [mpPrintInfo topMargin];
+ // dX -= [mpPrintInfo rightMargin];
CGContextTranslateCTM( i_rContext, dX + mnStartPageOffsetY, dY - mnStartPageOffsetX );
CGContextScaleCTM( i_rContext, -0.1, 0.1 );
@@ -447,77 +447,68 @@ void AquaSalInfoPrinter::GetPageInfo( const ImplJobSetup*,
}
}
-BOOL AquaSalInfoPrinter::StartJob( const String* pFileName,
- const String& rAppName,
- ImplJobSetup* pSetupData,
- ImplQPrinter* pQPrinter,
+BOOL AquaSalInfoPrinter::StartJob( const String* i_pFileName,
+ const String& i_rAppName,
+ ImplJobSetup* i_pSetupData,
+ vcl::PrinterListener& i_rListener,
bool bIsQuickJob )
{
if( mbJob )
return FALSE;
BOOL bSuccess = FALSE;
- std::vector aPaperRanges;
- if( ! pQPrinter->GetPaperRanges( aPaperRanges, true ) )
- return FALSE;
- size_t nRanges = aPaperRanges.size();
+ // FIXME: make paper ranges work again
+ mnCurPageRangeStart = 1;
+ mnCurPageRangeCount = i_rListener.getPageCount();
+
AquaSalInstance* pInst = GetSalData()->mpFirstInstance;
- for( ULONG nCurRange = 0; nCurRange < nRanges-1; nCurRange++ )
- {
- mnStartPageOffsetX = mnStartPageOffsetY = 0;
+ mnStartPageOffsetX = mnStartPageOffsetY = 0;
- // update job data
- ImplJobSetup* pSetup = pQPrinter->GetPageSetup( aPaperRanges[ nCurRange ] );
- if( pSetup )
- SetData( ~0, pSetup );
- DBG_ASSERT( pSetup, "no job setup for range" );
+ // update job data
+ if( i_pSetupData )
+ SetData( ~0, i_pSetupData );
- mnCurPageRangeStart = aPaperRanges[nCurRange];
- mnCurPageRangeCount = aPaperRanges[nCurRange+1] - aPaperRanges[nCurRange];
- // create view
- NSView* pPrintView = [[AquaPrintView alloc] initWithQPrinter: pQPrinter withInfoPrinter: this];
+ // create view
+ NSView* pPrintView = [[AquaPrintView alloc] initWithListener: &i_rListener withInfoPrinter: this];
- NSMutableDictionary* pPrintDict = [mpPrintInfo dictionary];
+ NSMutableDictionary* pPrintDict = [mpPrintInfo dictionary];
- // set filename
- if( pFileName )
- {
- [mpPrintInfo setJobDisposition: NSPrintSaveJob];
- NSString* pPath = CreateNSString( *pFileName );
- [pPrintDict setObject: pPath forKey: NSPrintSavePath];
- [pPath release];
-
- // in this case we can only deliver the print job in one file
- mnCurPageRangeStart = 0;
- mnCurPageRangeCount = aPaperRanges.back();
- nCurRange = nRanges;
- }
+ // set filename
+ if( i_pFileName )
+ {
+ [mpPrintInfo setJobDisposition: NSPrintSaveJob];
+ NSString* pPath = CreateNSString( *i_pFileName );
+ [pPrintDict setObject: pPath forKey: NSPrintSavePath];
+ [pPath release];
+ }
- [pPrintDict setObject: [[NSNumber numberWithInt: (int)pQPrinter->GetCopyCount()] autorelease] forKey: NSPrintCopies];
- [pPrintDict setObject: [[NSNumber numberWithBool: YES] autorelease] forKey: NSPrintDetailedErrorReporting];
- [pPrintDict setObject: [[NSNumber numberWithInt: 1] autorelease] forKey: NSPrintFirstPage];
- [pPrintDict setObject: [[NSNumber numberWithInt: (int)mnCurPageRangeCount] autorelease] forKey: NSPrintLastPage];
+ // FIXME copies
+ // [pPrintDict setObject: [[NSNumber numberWithInt: (int)pQPrinter->GetCopyCount()] autorelease] forKey: NSPrintCopies];
+ [pPrintDict setObject: [[NSNumber numberWithBool: YES] autorelease] forKey: NSPrintDetailedErrorReporting];
+ [pPrintDict setObject: [[NSNumber numberWithInt: 1] autorelease] forKey: NSPrintFirstPage];
+ [pPrintDict setObject: [[NSNumber numberWithInt: mnCurPageRangeCount] autorelease] forKey: NSPrintLastPage];
- // create print operation
- NSPrintOperation* pPrintOperation = [NSPrintOperation printOperationWithView: pPrintView printInfo: mpPrintInfo];
+ // create print operation
+ NSPrintOperation* pPrintOperation = [NSPrintOperation printOperationWithView: pPrintView printInfo: mpPrintInfo];
- if( pPrintOperation )
- {
- bool bShowPanel = (! bIsQuickJob && getUseNativeDialog() );
- [pPrintOperation setShowsPrintPanel: bShowPanel ? YES : NO ];
- // [pPrintOperation setShowsProgressPanel: NO];
- bSuccess = TRUE;
- mbJob = true;
- pInst->startedPrintJob();
- [pPrintOperation runOperation];
- pInst->endedPrintJob();
- mbJob = false;
- }
+ if( pPrintOperation )
+ {
+ bool bShowPanel = (! bIsQuickJob && getUseNativeDialog() );
+ [pPrintOperation setShowsPrintPanel: bShowPanel ? YES : NO ];
+ [pPrintOperation setShowsProgressPanel: bShowPanel ? YES : NO];
+ bSuccess = TRUE;
+ mbJob = true;
+ pInst->startedPrintJob();
+ [pPrintOperation runOperation];
+ pInst->endedPrintJob();
+ mbJob = false;
}
+ mnCurPageRangeStart = mnCurPageRangeCount = 0;
+
return bSuccess;
}
@@ -583,22 +574,22 @@ AquaSalPrinter::~AquaSalPrinter()
// -----------------------------------------------------------------------
-BOOL AquaSalPrinter::StartJob( const String* pFileName,
- const String& rAppName,
- ImplJobSetup* pSetupData,
- ImplQPrinter* pQPrinter )
+BOOL AquaSalPrinter::StartJob( const String* i_pFileName,
+ const String& i_rAppName,
+ ImplJobSetup* i_pSetupData,
+ vcl::PrinterListener& i_rListener )
{
bool bIsQuickJob = false;
std::hash_map< rtl::OUString, rtl::OUString, rtl::OUStringHash >::const_iterator quick_it =
- pSetupData->maValueMap.find( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsQuickJob" ) ) );
+ i_pSetupData->maValueMap.find( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsQuickJob" ) ) );
- if( quick_it != pSetupData->maValueMap.end() )
+ if( quick_it != i_pSetupData->maValueMap.end() )
{
if( quick_it->second.equalsIgnoreAsciiCaseAscii( "true" ) )
bIsQuickJob = true;
}
- return mpInfoPrinter->StartJob( pFileName, rAppName, pSetupData, pQPrinter, bIsQuickJob );
+ return mpInfoPrinter->StartJob( i_pFileName, i_rAppName, i_pSetupData, i_rListener, bIsQuickJob );
}
// -----------------------------------------------------------------------
diff --git a/vcl/inc/vcl/print.h b/vcl/inc/vcl/print.h
index 51cbb5dee0cf..bc74b6441f28 100644
--- a/vcl/inc/vcl/print.h
+++ b/vcl/inc/vcl/print.h
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: print.h,v $
- * $Revision: 1.4 $
+ * $Revision: 1.4.114.2 $
*
* This file is part of OpenOffice.org.
*
@@ -31,15 +31,18 @@
#ifndef _SV_PRINT_H
#define _SV_PRINT_H
-#include
-#include
-#include
+#include "vcl/sv.h"
+#include "vcl/dllapi.h"
#include
#include
struct SalPrinterQueueInfo;
class QueueInfo;
+class JobSetup;
+
+namespace vcl
+{ class PrinterListener; }
// ------------------------
// - private printer data -
@@ -87,5 +90,7 @@ public:
// --------------
void ImplDeletePrnQueueList();
+void SAL_DLLPRIVATE ImplUpdateJobSetupPaper( JobSetup& rJobSetup );
+
#endif // _SV_PRINT_H
diff --git a/vcl/inc/vcl/print.hxx b/vcl/inc/vcl/print.hxx
index c6a4a6c1adf9..e6199437ca4a 100644
--- a/vcl/inc/vcl/print.hxx
+++ b/vcl/inc/vcl/print.hxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: print.hxx,v $
- * $Revision: 1.6 $
+ * $Revision: 1.6.114.5 $
*
* This file is part of OpenOffice.org.
*
@@ -31,14 +31,19 @@
#ifndef _SV_PRINT_HXX
#define _SV_PRINT_HXX
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
+#include "tools/errcode.hxx"
+#include "vcl/sv.h"
+#include "vcl/dllapi.h"
+#include "vcl/outdev.hxx"
+#include "vcl/prntypes.hxx"
+#include "vcl/jobset.hxx"
+#include "vcl/gdimtf.hxx"
+#include "tools/stream.hxx"
+#include "tools/multisel.hxx"
+
+#include "com/sun/star/beans/XPropertySet.hpp"
+
+#include
struct SalPrinterInfoQueue;
class SalInfoPrinter;
@@ -47,12 +52,12 @@ class SalPrinter;
class VirtualDevice;
class Window;
class ImplQPrinter;
-class RmPrinter;
struct ImplPrivatePrinterData;
-namespace com { namespace sun { namespace star { namespace uno {
- class Any;
-} } } }
+namespace vcl {
+ class PrinterListener;
+ class PrintDialog;
+}
// -----------------
// - Printer-Types -
@@ -264,6 +269,11 @@ private:
SAL_DLLPRIVATE void ImplUpdateFontList();
SAL_DLLPRIVATE void ImplFindPaperFormatForUserSize( JobSetup& );
DECL_DLLPRIVATE_LINK( ImplDestroyPrinterAsync, void* );
+
+ SAL_DLLPRIVATE bool StartJob( const XubString& rJobName, boost::shared_ptr& );
+
+ static SAL_DLLPRIVATE ULONG ImplSalPrinterErrorCodeToVCL( ULONG nError );
+
public:
SAL_DLLPRIVATE void ImplEndPrint();
SAL_DLLPRIVATE void ImplUpdateQuickStatus();
@@ -421,6 +431,62 @@ public:
* if the printer list changed
*/
static void updatePrinters();
+
+ /** execute a print job
+
+ starts a print job asynchronously (that is will return
+
+ */
+ static void PrintJob( const boost::shared_ptr& i_pListener,
+ const JobSetup& i_rInitSetup,
+ const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet >& i_xJobOptions
+ );
+
+ // implementation detail of PrintJob being asynchronous
+ // not exported, not usable outside vcl
+ static void SAL_DLLPRIVATE ImplPrintJob( const boost::shared_ptr& i_pListener,
+ const JobSetup& i_rInitSetup,
+ const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet >& i_xJobOptions
+ );
+};
+
+namespace vcl
+{
+class ImplPrinterListenerData;
+
+class VCL_DLLPUBLIC PrinterListener
+{
+ ImplPrinterListenerData* mpImplData;
+public:
+ PrinterListener();
+ virtual ~PrinterListener();
+
+ const boost::shared_ptr& getPrinter() const;
+ const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet >& getJobParameters() const;
+ const MultiSelection& getPageSelection() const;
+
+ virtual int getPageCount() const = 0; // must be overloaded by the app
+ /* get the page parameters, namely the jobsetup that should be active for the page
+ (describing among others the physical page size) and the "page size". In writer
+ case this would probably be the same as the JobSetup since writer sets the page size
+ draw/impress for example print their page on the paper set on the printer,
+ possibly adjusting the page size to fit. That means the page size can be different from
+ the paper size.
+ */
+ virtual void getPageParameters( int i_nPage, JobSetup& o_rPageSetup, Size& o_rPageSize ) const = 0; // must be overloaded by the app, return page size in 1/100th mm
+ virtual void printPage( int i_nPage ) const = 0; // must be overloaded by the app
+ virtual void setListeners(); // optionally set listeners on mxJobParameters
+ virtual void jobFinished(); // optionally release resources bound to the job
+
+ void printFilteredPage( int i_nPage );
+
+ // implementation details, not usable outsid vcl
+ void SAL_DLLPRIVATE setPrinter( const boost::shared_ptr& );
+ void SAL_DLLPRIVATE setJobParameters( const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet >& );
+ void SAL_DLLPRIVATE setPageSelection( const MultiSelection& );
};
+}
+
+
#endif // _SV_PRINT_HXX
diff --git a/vcl/inc/vcl/prndlg.hxx b/vcl/inc/vcl/prndlg.hxx
index 4fd6eaa999da..f5b4a35e0331 100644
--- a/vcl/inc/vcl/prndlg.hxx
+++ b/vcl/inc/vcl/prndlg.hxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: prndlg.hxx,v $
- * $Revision: 1.3 $
+ * $Revision: 1.3.114.5 $
*
* This file is part of OpenOffice.org.
*
@@ -33,19 +33,122 @@
#include
-#include
+#include "vcl/print.hxx"
+#include "vcl/print.h"
-class Printer;
+#include "vcl/dialog.hxx"
+#include "vcl/fixed.hxx"
+#include "vcl/button.hxx"
+#include "vcl/scrbar.hxx"
+#include "vcl/gdimtf.hxx"
+#include "vcl/lstbox.hxx"
+#include "vcl/field.hxx"
+#include "vcl/tabctrl.hxx"
+#include "vcl/tabpage.hxx"
-class VCL_DLLPUBLIC SystemDialog : public ModalDialog
+#include "tools/multisel.hxx"
+
+#include
+
+
+namespace vcl
{
-public:
- SystemDialog( Window* pParent, WinBits nWinStyle ) :
- ModalDialog( pParent, nWinStyle ) {}
- SystemDialog( Window* pParent, const ResId& rResId ) :
- ModalDialog( pParent, rResId ) {}
-
- virtual short Execute() { return 0; }
-};
+ class PrintDialog : public ModalDialog
+ {
+ class PrintPreviewWindow : public Window
+ {
+ GDIMetaFile maMtf;
+ public:
+ PrintPreviewWindow( Window* pParent, const ResId& );
+ virtual ~PrintPreviewWindow();
+
+ virtual void Paint( const Rectangle& rRect );
+
+ void setPreview( const GDIMetaFile& );
+ };
+
+ class PrinterTabPage : public TabPage
+ {
+ public:
+ ListBox maPrinters;
+ PushButton maSetupButton;
+ FixedText maType;
+ FixedText maTypeText;
+ FixedText maStatus;
+ FixedText maStatusText;
+ FixedText maLocation;
+ FixedText maLocText;
+ FixedText maComment;
+ FixedText maCommentText;
+ CheckBox maToFileBox;
+
+ PrinterTabPage( Window*, const ResId& );
+ virtual ~PrinterTabPage();
+ };
+
+ class JobTabPage : public TabPage
+ {
+ public:
+ FixedLine maPrintRange;
+ RadioButton maAllButton;
+ RadioButton maPagesButton;
+ RadioButton maSelectionButton;
+ Edit maPagesEdit;
+
+ FixedLine maCopies;
+ FixedText maCopyCount;
+ NumericField maCopyCountField;
+ CheckBox maCollateBox;
+ FixedImage maCollateImage;
+
+ Image maCollateImg;
+ Image maCollateHCImg;
+ Image maNoCollateImg;
+ Image maNoCollateHCImg;
+
+ JobTabPage( Window*, const ResId& );
+ virtual ~JobTabPage();
+ };
+
+ OKButton maOKButton;
+ CancelButton maCancelButton;
+ PrintPreviewWindow maPreviewWindow;
+ FixedText maPageText;
+ ScrollBar maPageScrollbar;
+
+ TabControl maTabCtrl;
+ PrinterTabPage maPrinterPage;
+ JobTabPage maJobPage;
+
+ FixedLine maButtonLine;
+
+ boost::shared_ptr< PrinterListener > maPListener;
+
+ rtl::OUString maPageStr;
+ sal_Int32 mnCurPage;
+ sal_Int32 mnCachedPages;
+ Rectangle maPreviewSpace;
+
+ void preparePreview();
+ void setPreviewText( sal_Int32 );
+ void updatePrinterText();
+ void checkControlDependencies();
+
+ DECL_LINK( ScrollHdl, ScrollBar* );
+ DECL_LINK( ScrollEndHdl, ScrollBar* );
+ DECL_LINK( SelectHdl, ListBox* );
+ DECL_LINK( ClickHdl, Button* );
+ DECL_LINK( ModifyHdl, Edit* );
+ public:
+ PrintDialog( Window*, const boost::shared_ptr< PrinterListener >& );
+ virtual ~PrintDialog();
+
+ bool isPrintToFile();
+ MultiSelection getPageSelection();
+ int getCopyCount();
+ bool isCollate();
+ };
+}
+
#endif // _SV_PRNDLG_HXX
diff --git a/vcl/inc/vcl/salprn.hxx b/vcl/inc/vcl/salprn.hxx
index a80c5873cbfb..d76040f8cb8b 100644
--- a/vcl/inc/vcl/salprn.hxx
+++ b/vcl/inc/vcl/salprn.hxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: salprn.hxx,v $
- * $Revision: 1.5 $
+ * $Revision: 1.5.114.1 $
*
* This file is part of OpenOffice.org.
*
@@ -41,7 +41,7 @@
class SalGraphics;
class SalFrame;
struct ImplJobSetup;
-class ImplQPrinter;
+namespace vcl { class PrinterListener; }
// -----------------------
// - SalPrinterQueueInfo -
@@ -125,7 +125,7 @@ public: // public for Sal Implementation
virtual BOOL StartJob( const String* pFileName,
const String& rAppName,
ImplJobSetup* pSetupData,
- ImplQPrinter* pQPrinter );
+ vcl::PrinterListener& rListener );
virtual BOOL EndJob() = 0;
virtual BOOL AbortJob() = 0;
diff --git a/vcl/inc/vcl/svdata.hxx b/vcl/inc/vcl/svdata.hxx
index 536f629bfa9e..e252cb5793f1 100644
--- a/vcl/inc/vcl/svdata.hxx
+++ b/vcl/inc/vcl/svdata.hxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: svdata.hxx,v $
- * $Revision: 1.13 $
+ * $Revision: 1.13.16.1 $
*
* This file is part of OpenOffice.org.
*
@@ -352,6 +352,7 @@ void ImplDeInitSVData();
void ImplDestroySVData();
Window* ImplGetDefaultWindow();
VCL_DLLPUBLIC ResMgr* ImplGetResMgr();
+VCL_DLLPUBLIC ResId VclResId( sal_Int32 nId ); // throws std::bad_alloc if no res mgr
DockingManager* ImplGetDockingManager();
void ImplWindowAutoMnemonic( Window* pWindow );
diff --git a/vcl/inc/vcl/svids.hrc b/vcl/inc/vcl/svids.hrc
index 47654c33bfd5..93a8b5cf3d46 100644
--- a/vcl/inc/vcl/svids.hrc
+++ b/vcl/inc/vcl/svids.hrc
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: svids.hrc,v $
- * $Revision: 1.8 $
+ * $Revision: 1.8.84.3 $
*
* This file is part of OpenOffice.org.
*
@@ -73,6 +73,44 @@
#define SV_MENU_MAC_SHOWALL 2005
#define SV_MENU_MAC_QUITAPP 2006
+#define SV_DLG_PRINT 2048
+#define SV_PRINT_OK 1
+#define SV_PRINT_CANCEL 2
+#define SV_PRINT_PAGE_TXT 3
+#define SV_PRINT_PAGE_PREVIEW 4
+#define SV_PRINT_PAGE_SCROLL 5
+#define SV_PRINT_TABCTRL 6
+
+#define SV_PRINT_TAB_PRINTER 1
+#define SV_PRINT_PRINTERS 1
+#define SV_PRINT_PRT_TYPE 2
+#define SV_PRINT_PRT_TYPE_TXT 3
+#define SV_PRINT_PRT_STATUS 4
+#define SV_PRINT_PRT_STATUS_TXT 5
+#define SV_PRINT_PRT_LOCATION 6
+#define SV_PRINT_PRT_LOCATION_TXT 7
+#define SV_PRINT_PRT_COMMENT 8
+#define SV_PRINT_PRT_COMMENT_TXT 9
+#define SV_PRINT_PRT_TOFILE 10
+#define SV_PRINT_PRT_SETUP 11
+
+#define SV_PRINT_TAB_JOB 2
+#define SV_PRINT_RANGE 1
+#define SV_PRINT_ALL 2
+#define SV_PRINT_PAGERANGE 3
+#define SV_PRINT_SELECTION 4
+#define SV_PRINT_PAGERANGE_EDIT 5
+#define SV_PRINT_COPIES 6
+#define SV_PRINT_COPYCOUNT 7
+#define SV_PRINT_COPYCOUNT_FIELD 8
+#define SV_PRINT_COLLATE 9
+#define SV_PRINT_COLLATE_IMAGE 10
+#define SV_PRINT_BUTTONLINE 11
+#define SV_PRINT_COLLATE_IMG 12
+#define SV_PRINT_NOCOLLATE_IMG 13
+#define SV_PRINT_COLLATE_HC_IMG 14
+#define SV_PRINT_NOCOLLATE_HC_IMG 15
+
#define SV_HELPTEXT_CLOSE 10000
#define SV_HELPTEXT_MINIMIZE 10001
#define SV_HELPTEXT_MAXIMIZE 10002
@@ -107,7 +145,8 @@
#define SV_STDTEXT_ABOUT 10204
#define SV_STDTEXT_PREFERENCES 10205
#define SV_MAC_SCREENNNAME 10206
-#define SV_STDTEXT_LAST SV_MAC_SCREENNNAME
+#define SV_STDTEXT_ALLFILETYPES 10207
+#define SV_STDTEXT_LAST SV_STDTEXT_ALLFILETYPES
#define SV_ACCESSERROR_FIRST SV_ACCESSERROR_WRONG_VERSION
#define SV_ACCESSERROR_WRONG_VERSION 10500
diff --git a/vcl/prj/d.lst b/vcl/prj/d.lst
index 919fdc5f944e..39d3e8aa9c02 100644
--- a/vcl/prj/d.lst
+++ b/vcl/prj/d.lst
@@ -87,7 +87,6 @@ mkdir: %_DEST%\inc%_EXT%\vcl\plug\vcl
..\inc\vcl\outdev3d.hxx %_DEST%\inc%_EXT%\vcl\outdev3d.hxx
..\inc\vcl\pointr.hxx %_DEST%\inc%_EXT%\vcl\pointr.hxx
..\inc\vcl\print.hxx %_DEST%\inc%_EXT%\vcl\print.hxx
-..\inc\vcl\prndlg.hxx %_DEST%\inc%_EXT%\vcl\prndlg.hxx
..\inc\vcl\prntypes.hxx %_DEST%\inc%_EXT%\vcl\prntypes.hxx
..\inc\vcl\ptrstyle.hxx %_DEST%\inc%_EXT%\vcl\ptrstyle.hxx
..\inc\vcl\regband.hxx %_DEST%\inc%_EXT%\vcl\regband.hxx
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 69868ed38e55..cd169fc81fe7 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -91,7 +91,7 @@ SalPrinter::~SalPrinter()
}
BOOL SalPrinter::StartJob( const String*, const String&,
- ImplJobSetup*, ImplQPrinter* )
+ ImplJobSetup*, vcl::PrinterListener& )
{
return FALSE;
}
diff --git a/vcl/source/app/svdata.cxx b/vcl/source/app/svdata.cxx
index edfd6a24bff9..56ba933e3931 100644
--- a/vcl/source/app/svdata.cxx
+++ b/vcl/source/app/svdata.cxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: svdata.cxx,v $
- * $Revision: 1.56 $
+ * $Revision: 1.56.114.1 $
*
* This file is part of OpenOffice.org.
*
@@ -220,6 +220,15 @@ ResMgr* ImplGetResMgr()
return pSVData->mpResMgr;
}
+ResId VclResId( sal_Int32 nId )
+{
+ ResMgr* pMgr = ImplGetResMgr();
+ if( ! pMgr )
+ throw std::bad_alloc();
+
+ return ResId( nId, *pMgr );
+}
+
DockingManager* ImplGetDockingManager()
{
ImplSVData* pSVData = ImplGetSVData();
diff --git a/vcl/source/gdi/impprn.cxx b/vcl/source/gdi/impprn.cxx
index 5da5f951f203..a40357f003dc 100644
--- a/vcl/source/gdi/impprn.cxx
+++ b/vcl/source/gdi/impprn.cxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: impprn.cxx,v $
- * $Revision: 1.19 $
+ * $Revision: 1.19.54.1 $
*
* This file is part of OpenOffice.org.
*
@@ -464,10 +464,12 @@ void ImplQPrinter::EndQueuePrint()
DBG_ASSERT( mpPrinter, "no SalPrinter in ImplQPrinter" );
if( mpPrinter )
{
+ #if 0
mpPrinter->StartJob( mbPrintFile ? &maPrintFile : NULL,
Application::GetDisplayName(),
maJobSetup.ImplGetConstData(),
this );
+ #endif
EndJob();
mpParent->ImplEndPrint();
}
diff --git a/vcl/source/gdi/makefile.mk b/vcl/source/gdi/makefile.mk
index 7d68fbe40d3f..6a856df59d02 100644
--- a/vcl/source/gdi/makefile.mk
+++ b/vcl/source/gdi/makefile.mk
@@ -8,7 +8,7 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.33 $
+# $Revision: 1.33.92.1 $
#
# This file is part of OpenOffice.org.
#
@@ -96,6 +96,7 @@ SLOFILES= $(SLO)$/salmisc.obj \
$(SLO)$/fontcvt.obj \
$(SLO)$/print.obj \
$(SLO)$/print2.obj \
+ $(SLO)$/print3.obj \
$(SLO)$/regband.obj \
$(SLO)$/region.obj \
$(SLO)$/wall.obj \
@@ -121,6 +122,7 @@ EXCEPTIONSFILES= $(SLO)$/salmisc.obj \
$(SLO)$/gfxlink.obj \
$(SLO)$/print.obj \
$(SLO)$/print2.obj \
+ $(SLO)$/print3.obj \
$(SLO)$/sallayout.obj \
$(SLO)$/image.obj \
$(SLO)$/impimage.obj \
diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx
index 11bed4b7ae67..45f6a5c7d0c2 100644
--- a/vcl/source/gdi/print.cxx
+++ b/vcl/source/gdi/print.cxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: print.cxx,v $
- * $Revision: 1.65 $
+ * $Revision: 1.65.114.1 $
*
* This file is part of OpenOffice.org.
*
@@ -1309,7 +1309,7 @@ void Printer::PrintPage()
// -----------------------------------------------------------------------
-ULONG ImplSalPrinterErrorCodeToVCL( ULONG nError )
+ULONG Printer::ImplSalPrinterErrorCodeToVCL( ULONG nError )
{
ULONG nVCLError;
switch ( nError )
diff --git a/vcl/source/gdi/print3.cxx b/vcl/source/gdi/print3.cxx
new file mode 100644
index 000000000000..e92d5c250112
--- /dev/null
+++ b/vcl/source/gdi/print3.cxx
@@ -0,0 +1,408 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: print3.cxx,v $
+ * $Revision: 1.1.2.11 $
+ *
+ * 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
+ *
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "precompiled_vcl.hxx"
+
+#include "vcl/print.hxx"
+#include "vcl/prndlg.hxx"
+#include "vcl/svapp.hxx"
+#include "vcl/svdata.hxx"
+#include "vcl/salinst.hxx"
+#include "vcl/salprn.hxx"
+#include "vcl/svids.hrc"
+
+#include "tools/urlobj.hxx"
+#include "tools/multisel.hxx"
+
+#include "com/sun/star/ui/dialogs/XFilePicker.hpp"
+#include "com/sun/star/ui/dialogs/XFilterManager.hpp"
+#include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
+#include "com/sun/star/ui/dialogs/ExecutableDialogResults.hpp"
+#include "com/sun/star/lang/XMultiServiceFactory.hpp"
+#include "comphelper/processfactory.hxx"
+
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+using namespace vcl;
+
+class vcl::ImplPrinterListenerData
+{
+public:
+ boost::shared_ptr mpPrinter;
+ com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet > mxJobParameters;
+ MultiSelection maSelection;
+};
+
+PrinterListener::PrinterListener()
+ : mpImplData( new ImplPrinterListenerData )
+{
+}
+
+static rtl::OUString queryFile( Printer* pPrinter )
+{
+ rtl::OUString aResult;
+
+ uno::Reference< lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
+ if( xFactory.is() )
+ {
+ uno::Sequence< uno::Any > aTempl( 1 );
+ aTempl.getArray()[0] <<= ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION;
+ uno::Reference< ui::dialogs::XFilePicker > xFilePicker(
+ xFactory->createInstanceWithArguments(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ),
+ aTempl ), uno::UNO_QUERY );
+ DBG_ASSERT( xFilePicker.is(), "could not get FilePicker service" );
+
+ uno::Reference< ui::dialogs::XFilterManager > xFilterMgr( xFilePicker, uno::UNO_QUERY );
+ if( xFilePicker.is() && xFilterMgr.is() )
+ {
+ try
+ {
+#ifdef UNX
+ // add PostScript and PDF
+ bool bPS = true, bPDF = true;
+ if( pPrinter )
+ {
+ if( pPrinter->GetCapabilities( PRINTER_CAPABILITIES_PDF ) )
+ bPS = false;
+ else
+ bPDF = false;
+ }
+ if( bPS )
+ xFilterMgr->appendFilter( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PostScript" ) ), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.ps" ) ) );
+ if( bPDF )
+ xFilterMgr->appendFilter( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Portable Document Format" ) ), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.pdf" ) ) );
+#elif defined WNT
+ (void)pPrinter;
+ xFilterMgr->appendFilter( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.PRN" ) ), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.prn" ) ) );
+#endif
+ // add arbitrary files
+ xFilterMgr->appendFilter( String( VclResId( SV_STDTEXT_ALLFILETYPES ) ), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.*" ) ) );
+ }
+ catch( lang::IllegalArgumentException rExc )
+ {
+ DBG_ERRORFILE( "caught IllegalArgumentException when registering filter\n" );
+ }
+
+ if( xFilePicker->execute() == ui::dialogs::ExecutableDialogResults::OK )
+ {
+ uno::Sequence< ::rtl::OUString > aPathSeq( xFilePicker->getFiles() );
+ INetURLObject aObj( aPathSeq[0] );
+ aResult = aObj.PathToFileName();
+ }
+ }
+ }
+ return aResult;
+}
+
+struct PrintJobAsync
+{
+ boost::shared_ptr mpListener;
+ JobSetup maInitSetup;
+ Reference< beans::XPropertySet > mxJobOptions;
+
+ PrintJobAsync( const boost::shared_ptr& i_pListener,
+ const JobSetup& i_rInitSetup,
+ const Reference< beans::XPropertySet >& i_xJobOptions
+ )
+ : mpListener( i_pListener ), maInitSetup( i_rInitSetup ), mxJobOptions( i_xJobOptions )
+ {}
+
+ DECL_LINK( ExecJob, void* );
+};
+
+IMPL_LINK( PrintJobAsync, ExecJob, void*, EMPTYARG )
+{
+ Printer::ImplPrintJob( mpListener, maInitSetup, mxJobOptions );
+
+ // clean up, do not access members after this
+ delete this;
+
+ return 0;
+}
+
+void Printer::PrintJob( const boost::shared_ptr& i_pListener,
+ const JobSetup& i_rInitSetup,
+ const Reference< beans::XPropertySet >& i_xJobOptions
+ )
+{
+ PrintJobAsync* pAsync = new PrintJobAsync( i_pListener, i_rInitSetup, i_xJobOptions );
+ Application::PostUserEvent( LINK( pAsync, PrintJobAsync, ExecJob ) );
+}
+
+void Printer::ImplPrintJob( const boost::shared_ptr& i_pListener,
+ const JobSetup& i_rInitSetup,
+ const Reference< beans::XPropertySet >& /*i_xJobOptions*/
+ )
+{
+ // setup printer
+ boost::shared_ptr pListener( i_pListener );
+ boost::shared_ptr pPrinter( new Printer( i_rInitSetup.GetPrinterName() ) );
+ pListener->setPrinter( pPrinter );
+
+ // setup page range selection
+ MultiSelection aSel;
+ int nPages = i_pListener->getPageCount();
+ aSel.SetTotalRange( Range( 1, nPages ) );
+ aSel.SelectAll();
+
+ // check if the printer brings up its own dialog
+ // in that case leave the work to that dialog
+ if( ! pListener->getPrinter()->GetCapabilities( PRINTER_CAPABILITIES_EXTERNALDIALOG ) )
+ {
+ try
+ {
+ PrintDialog aDlg( NULL, i_pListener );
+ if( ! aDlg.Execute() )
+ return;
+ if( aDlg.isPrintToFile() )
+ {
+ rtl::OUString aFile = queryFile( pListener->getPrinter().get() );
+ if( ! aFile.getLength() )
+ return;
+ pListener->getPrinter()->EnablePrintFile( TRUE );
+ pListener->getPrinter()->SetPrintFile( aFile );
+ }
+ aSel = aDlg.getPageSelection();
+ pListener->getPrinter()->SetCopyCount( aDlg.getCopyCount(), aDlg.isCollate() );
+ }
+ catch( std::bad_alloc& )
+ {
+ }
+ }
+
+ pListener->setPageSelection( aSel );
+ pListener->getPrinter()->StartJob( String( RTL_CONSTASCII_USTRINGPARAM( "FIXME: no job name" ) ),
+ pListener );
+
+ pListener->jobFinished();
+}
+
+bool Printer::StartJob( const XubString& i_rJobName, boost::shared_ptr& i_pListener )
+{
+ mnError = PRINTER_OK;
+
+ if ( IsDisplayPrinter() )
+ return FALSE;
+
+ if ( IsJobActive() || IsPrinting() )
+ return FALSE;
+
+ if( mpPrinterData->mbNextJobIsQuick )
+ {
+ String aKey( RTL_CONSTASCII_USTRINGPARAM( "IsQuickJob" ) );
+ if( maJobSetup.GetValue( aKey ).Len() == 0 )
+ maJobSetup.SetValue( aKey, String( RTL_CONSTASCII_USTRINGPARAM( "true" ) ) );
+ }
+
+ ULONG nCopies = mnCopyCount;
+ BOOL bCollateCopy = mbCollateCopy;
+ BOOL bUserCopy = FALSE;
+
+ if ( nCopies > 1 )
+ {
+ ULONG nDevCopy;
+
+ if ( bCollateCopy )
+ nDevCopy = GetCapabilities( PRINTER_CAPABILITIES_COLLATECOPIES );
+ else
+ nDevCopy = GetCapabilities( PRINTER_CAPABILITIES_COPIES );
+
+ // Muessen Kopien selber gemacht werden?
+ if ( nCopies > nDevCopy )
+ {
+ bUserCopy = TRUE;
+ nCopies = 1;
+ bCollateCopy = FALSE;
+ }
+ }
+ else
+ bCollateCopy = FALSE;
+
+
+ ImplSVData* pSVData = ImplGetSVData();
+ mpPrinter = pSVData->mpDefInst->CreatePrinter( mpInfoPrinter );
+
+ if ( !mpPrinter )
+ return FALSE;
+
+ XubString* pPrintFile;
+ if ( mbPrintFile )
+ pPrintFile = &maPrintFile;
+ else
+ pPrintFile = NULL;
+
+ maJobName = i_rJobName;
+ mnCurPage = 1;
+ mnCurPrintPage = 1;
+ mbPrinting = TRUE;
+ if( ImplGetSVData()->maGDIData.mbPrinterPullModel )
+ {
+ mbJobActive = TRUE;
+ // sallayer does all necesseary page printing
+ if( mpPrinter->StartJob( pPrintFile,
+ Application::GetDisplayName(),
+ maJobSetup.ImplGetConstData(),
+ *i_pListener ) )
+ {
+ EndJob();
+ }
+ else
+ {
+ mnError = ImplSalPrinterErrorCodeToVCL( mpPrinter->GetErrorCode() );
+ if ( !mnError )
+ mnError = PRINTER_GENERALERROR;
+ pSVData->mpDefInst->DestroyPrinter( mpPrinter );
+ mnCurPage = 0;
+ mnCurPrintPage = 0;
+ mbPrinting = FALSE;
+ mpPrinter = NULL;
+
+ return false;
+ }
+ }
+ else
+ {
+ if( mpPrinter->StartJob( pPrintFile,
+ i_rJobName,
+ Application::GetDisplayName(),
+ nCopies, bCollateCopy,
+ maJobSetup.ImplGetConstData() ) )
+ {
+ mbJobActive = TRUE;
+ MultiSelection aSel( i_pListener->getPageSelection() );
+ for( long nPage = aSel.FirstSelected(); nPage != long(SFX_ENDOFSELECTION); nPage = aSel.NextSelected() )
+ {
+ // remember MultiSelection is 1 based (due to user input)
+ i_pListener->printFilteredPage( static_cast(nPage-1) );
+ }
+ EndJob();
+ }
+ else
+ {
+ mnError = ImplSalPrinterErrorCodeToVCL( mpPrinter->GetErrorCode() );
+ if ( !mnError )
+ mnError = PRINTER_GENERALERROR;
+ pSVData->mpDefInst->DestroyPrinter( mpPrinter );
+ mnCurPage = 0;
+ mnCurPrintPage = 0;
+ mbPrinting = FALSE;
+ mpPrinter = NULL;
+
+ return false;
+ }
+ }
+
+ return true;
+}
+
+PrinterListener::~PrinterListener()
+{
+ delete mpImplData;
+}
+
+const boost::shared_ptr& PrinterListener::getPrinter() const
+{
+ return mpImplData->mpPrinter;
+}
+
+const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet >& PrinterListener::getJobParameters() const
+{
+ return mpImplData->mxJobParameters;
+}
+
+const MultiSelection& PrinterListener::getPageSelection() const
+{
+ return mpImplData->maSelection;
+}
+
+void PrinterListener::setPrinter( const boost::shared_ptr& i_rPrinter )
+{
+ mpImplData->mpPrinter = i_rPrinter;
+}
+
+void PrinterListener::setJobParameters( const Reference< beans::XPropertySet >& i_pParams )
+{
+ mpImplData->mxJobParameters = i_pParams;
+}
+
+void PrinterListener::setPageSelection( const MultiSelection& i_rSel )
+{
+ mpImplData->maSelection = i_rSel;
+}
+
+void PrinterListener::printFilteredPage( int i_nPage )
+{
+ // get page parameters
+ JobSetup aPageSetup;
+ Size aPageSize;
+ getPageParameters( i_nPage, aPageSetup, aPageSize );
+ const MapMode aMapMode( MAP_100TH_MM );
+
+
+ mpImplData->mpPrinter->Push();
+ mpImplData->mpPrinter->EnableOutput( FALSE );
+ mpImplData->mpPrinter->SetMapMode( aMapMode );
+
+ GDIMetaFile aMtf;
+ aMtf.Record( mpImplData->mpPrinter.get() );
+
+ printPage( i_nPage );
+
+ aMtf.Stop();
+ aMtf.WindStart();
+ mpImplData->mpPrinter->Pop();
+
+ // FIXME: do transparency filtering here when vcl92 is integrated
+
+ mpImplData->mpPrinter->EnableOutput( TRUE );
+ if( aPageSetup != mpImplData->mpPrinter->GetJobSetup() ) // set new setup if changed
+ mpImplData->mpPrinter->SetJobSetup( aPageSetup );
+
+ // actually print the page
+ mpImplData->mpPrinter->StartPage();
+
+ mpImplData->mpPrinter->Push();
+ mpImplData->mpPrinter->SetMapMode( MAP_100TH_MM );
+ aMtf.WindStart();
+ aMtf.Play( mpImplData->mpPrinter.get() );
+ mpImplData->mpPrinter->Pop();
+
+ mpImplData->mpPrinter->EndPage();
+}
+
+void PrinterListener::setListeners()
+{
+}
+
+void PrinterListener::jobFinished()
+{
+}
+
diff --git a/vcl/source/src/makefile.mk b/vcl/source/src/makefile.mk
index cf01c74b977d..7772af5a0978 100644
--- a/vcl/source/src/makefile.mk
+++ b/vcl/source/src/makefile.mk
@@ -8,7 +8,7 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.8 $
+# $Revision: 1.8.114.1 $
#
# This file is part of OpenOffice.org.
#
@@ -47,7 +47,8 @@ SRC1FILES= images.src \
stdtext.src \
helptext.src \
units.src \
- btntext.src
+ btntext.src \
+ print.src
RESLIB1NAME= $(RESTARGET)
RESLIB1IMAGES= $(PRJ)$/source/src
diff --git a/vcl/source/src/print.src b/vcl/source/src/print.src
new file mode 100644
index 000000000000..b85783b02ddd
--- /dev/null
+++ b/vcl/source/src/print.src
@@ -0,0 +1,247 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: print.src,v $
+ * $Revision: 1.1.2.4 $
+ *
+ * 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
+ *
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "vcl/svids.hrc"
+
+ModalDialog SV_DLG_PRINT
+{
+ Text [en-US] = "Printing";
+ Closeable = TRUE;
+ Sizeable = FALSE;
+ Moveable = TRUE;
+ SVLook = TRUE;
+
+ Size = MAP_APPFONT( 350, 195 );
+
+ OKButton SV_PRINT_OK
+ {
+ DefButton = TRUE;
+ Pos = MAP_APPFONT( 240, 175 );
+ Size = MAP_APPFONT( 50, 15 );
+ };
+ CancelButton SV_PRINT_CANCEL
+ {
+ Pos = MAP_APPFONT( 295, 175 );
+ Size = MAP_APPFONT( 50, 15 );
+ };
+
+ Window SV_PRINT_PAGE_PREVIEW
+ {
+ Pos = MAP_APPFONT( 5, 5 );
+ Size = MAP_APPFONT( 130, 130 );
+ Border = TRUE;
+ };
+ ScrollBar SV_PRINT_PAGE_SCROLL
+ {
+ Pos = MAP_APPFONT( 5, 140 );
+ Size = MAP_APPFONT( 130, 10 );
+ SVLook = TRUE;
+ HScroll = TRUE;
+ TabStop = TRUE;
+ };
+ FixedText SV_PRINT_PAGE_TXT
+ {
+ Pos = MAP_APPFONT( 5,150 );
+ Size = MAP_APPFONT( 130, 10 );
+ Text [ en-US ] = "Page %p of %n";
+ Center = TRUE;
+ };
+ TabControl SV_PRINT_TABCTRL
+ {
+ Pos = MAP_APPFONT( 140, 5 );
+ Size = MAP_APPFONT( 205, 155 );
+ };
+ FixedLine SV_PRINT_BUTTONLINE
+ {
+ Pos = MAP_APPFONT( 0, 165 );
+ Size = MAP_APPFONT( 350, 8 );
+ };
+
+ TabPage SV_PRINT_TAB_PRINTER
+ {
+ Text [en-US] = "Printer";
+ Hide = TRUE;
+
+ ListBox SV_PRINT_PRINTERS
+ {
+ Pos = MAP_APPFONT( 5, 5 );
+ Size = MAP_APPFONT( 100, 200 );
+ DropDown = TRUE;
+ };
+ PushButton SV_PRINT_PRT_SETUP
+ {
+ Pos = MAP_APPFONT( 115, 5 );
+ Size = MAP_APPFONT( 50, 15 );
+ Text [en-US] = "Properties...";
+ };
+ FixedText SV_PRINT_PRT_TYPE
+ {
+ Pos = MAP_APPFONT( 5, 30 );
+ Size = MAP_APPFONT( 40, 10 );
+ Text [en-US] = "Type";
+ };
+ FixedText SV_PRINT_PRT_TYPE_TXT
+ {
+ Pos = MAP_APPFONT( 50, 30 );
+ Size = MAP_APPFONT( 200, 10 );
+ };
+ FixedText SV_PRINT_PRT_STATUS
+ {
+ Pos = MAP_APPFONT( 5, 42 );
+ Size = MAP_APPFONT( 40, 10 );
+ Text [en-US] = "Status";
+ };
+ FixedText SV_PRINT_PRT_STATUS_TXT
+ {
+ Pos = MAP_APPFONT( 50, 42 );
+ Size = MAP_APPFONT( 200, 10 );
+ };
+ FixedText SV_PRINT_PRT_LOCATION
+ {
+ Pos = MAP_APPFONT( 5, 54 );
+ Size = MAP_APPFONT( 40, 10 );
+ Text [en-US] = "Location";
+ };
+ FixedText SV_PRINT_PRT_LOCATION_TXT
+ {
+ Pos = MAP_APPFONT( 50, 54 );
+ Size = MAP_APPFONT( 200, 10 );
+ };
+ FixedText SV_PRINT_PRT_COMMENT
+ {
+ Pos = MAP_APPFONT( 5, 66 );
+ Size = MAP_APPFONT( 40, 10 );
+ Text [en-US] = "Comment";
+ };
+ FixedText SV_PRINT_PRT_COMMENT_TXT
+ {
+ Pos = MAP_APPFONT( 50, 66 );
+ Size = MAP_APPFONT( 200, 10 );
+ };
+ CheckBox SV_PRINT_PRT_TOFILE
+ {
+ Pos = MAP_APPFONT( 5, 80 );
+ Size = MAP_APPFONT( 200, 12 );
+ Text [en-US] = "Print to file";
+ };
+ };
+
+ TabPage SV_PRINT_TAB_JOB
+ {
+ Text [en-US] = "Job Setup";
+ Hide = TRUE;
+
+ FixedLine SV_PRINT_RANGE
+ {
+ Pos = MAP_APPFONT( 5, 5 );
+ Size = MAP_APPFONT( 150, 10 );
+ Text [en-US] = "Print range";
+ };
+ RadioButton SV_PRINT_ALL
+ {
+ Pos = MAP_APPFONT( 10, 15 );
+ Size = MAP_APPFONT( 145, 15 );
+ Text [en-US] = "All pages";
+ Check = TRUE;
+ };
+ RadioButton SV_PRINT_PAGERANGE
+ {
+ Pos = MAP_APPFONT( 10, 30 );
+ Size = MAP_APPFONT( 60, 15 );
+ Text [en-US] = "Pages";
+ };
+ Edit SV_PRINT_PAGERANGE_EDIT
+ {
+ Pos = MAP_APPFONT( 70, 30 );
+ Size = MAP_APPFONT( 80, 15 );
+ Border = TRUE;
+ };
+ RadioButton SV_PRINT_SELECTION
+ {
+ Pos = MAP_APPFONT( 10, 45 );
+ Size = MAP_APPFONT( 145, 15 );
+ Text [en-US] = "Selection";
+ };
+
+ FixedLine SV_PRINT_COPIES
+ {
+ Pos = MAP_APPFONT( 5, 70 );
+ Size = MAP_APPFONT( 150, 10 );
+ Text [en-US] = "Copies";
+ };
+ FixedText SV_PRINT_COPYCOUNT
+ {
+ Pos = MAP_APPFONT( 10, 80 );
+ Size = MAP_APPFONT( 80, 10 );
+ Text [en-US] = "Number of copies";
+ };
+ NumericField SV_PRINT_COPYCOUNT_FIELD
+ {
+ Pos = MAP_APPFONT( 90, 80 );
+ Size = MAP_APPFONT( 40, 10 );
+ Border = TRUE;
+ Spin = TRUE;
+ Minimum = 1;
+ Maximum = 16384;
+ Value = 1;
+ };
+ FixedImage SV_PRINT_COLLATE_IMAGE
+ {
+ Pos = MAP_APPFONT( 10, 100 );
+ Size = MAP_PIXEL( 80, 30 );
+ };
+ CheckBox SV_PRINT_COLLATE
+ {
+ Pos = MAP_APPFONT( 80, 100 );
+ Size = MAP_APPFONT( 70, 10 );
+ Text [en-US] = "Collate";
+ };
+
+ Image SV_PRINT_COLLATE_IMG
+ {
+ ImageBitmap = Bitmap { File = "collate.png" ; };
+ };
+
+ Image SV_PRINT_NOCOLLATE_IMG
+ {
+ ImageBitmap = Bitmap { File = "ncollate.png" ; };
+ };
+
+ Image SV_PRINT_COLLATE_HC_IMG
+ {
+ ImageBitmap = Bitmap { File = "collate_h.png" ; };
+ };
+
+ Image SV_PRINT_NOCOLLATE_HC_IMG
+ {
+ ImageBitmap = Bitmap { File = "ncollate_h.png" ; };
+ };
+ };
+};
diff --git a/vcl/source/src/stdtext.src b/vcl/source/src/stdtext.src
index 5ad1cdceeb61..d4dca4915b6b 100644
--- a/vcl/source/src/stdtext.src
+++ b/vcl/source/src/stdtext.src
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: stdtext.src,v $
- * $Revision: 1.53 $
+ * $Revision: 1.53.84.1 $
*
* This file is part of OpenOffice.org.
*
@@ -123,3 +123,8 @@ String SV_MAC_SCREENNNAME
{
Text [en-US] = "Screen %d";
};
+
+String SV_STDTEXT_ALLFILETYPES
+{
+ Text [en-US] = "Any type";
+};
diff --git a/vcl/source/window/makefile.mk b/vcl/source/window/makefile.mk
index cdd4aef73bb0..cadea48f6f7a 100644
--- a/vcl/source/window/makefile.mk
+++ b/vcl/source/window/makefile.mk
@@ -8,7 +8,7 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.25 $
+# $Revision: 1.25.114.1 $
#
# This file is part of OpenOffice.org.
#
@@ -70,6 +70,7 @@ SLOFILES= \
$(SLO)$/mnemonicengine.obj \
$(SLO)$/msgbox.obj \
$(SLO)$/scrwnd.obj \
+ $(SLO)$/printdlg.obj \
$(SLO)$/seleng.obj \
$(SLO)$/split.obj \
$(SLO)$/splitwin.obj \
diff --git a/vcl/source/window/printdlg.cxx b/vcl/source/window/printdlg.cxx
new file mode 100644
index 000000000000..9270562358be
--- /dev/null
+++ b/vcl/source/window/printdlg.cxx
@@ -0,0 +1,405 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: printdlg.cxx,v $
+ * $Revision: 1.1.2.7 $
+ *
+ * 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
+ *
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "precompiled_vcl.hxx"
+
+#include "vcl/print.hxx"
+#include "vcl/prndlg.hxx"
+#include "vcl/dialog.hxx"
+#include "vcl/button.hxx"
+#include "vcl/svdata.hxx"
+#include "vcl/svids.hrc"
+#include "vcl/wall.hxx"
+#include "vcl/jobset.h"
+
+#include "rtl/ustrbuf.hxx"
+
+using namespace vcl;
+
+PrintDialog::PrintPreviewWindow::PrintPreviewWindow( Window* i_pParent, const ResId& i_rId )
+ : Window( i_pParent, i_rId )
+{
+}
+
+PrintDialog::PrintPreviewWindow::~PrintPreviewWindow()
+{
+}
+
+void PrintDialog::PrintPreviewWindow::Paint( const Rectangle& i_rRect )
+{
+ Window::Paint( i_rRect );
+
+ SetFillColor( Color( COL_WHITE ) );
+ SetLineColor();
+ DrawRect( Rectangle( Point( 0, 0 ), GetSizePixel() ));
+ Push();
+ SetMapMode( MAP_100TH_MM );
+ maMtf.WindStart();
+ maMtf.Play( this, Point( 0, 0 ), PixelToLogic( GetSizePixel() ) );
+ Pop();
+}
+
+void PrintDialog::PrintPreviewWindow::setPreview( const GDIMetaFile& i_rNewPreview )
+{
+ maMtf = i_rNewPreview;
+ Invalidate();
+}
+
+PrintDialog::PrinterTabPage::PrinterTabPage( Window* i_pParent, const ResId& rResId )
+ : TabPage( i_pParent, rResId )
+ , maPrinters( this, VclResId( SV_PRINT_PRINTERS) )
+ , maSetupButton( this, VclResId( SV_PRINT_PRT_SETUP ) )
+ , maType( this, VclResId( SV_PRINT_PRT_TYPE ) )
+ , maTypeText( this, VclResId( SV_PRINT_PRT_TYPE_TXT ) )
+ , maStatus( this, VclResId( SV_PRINT_PRT_STATUS ) )
+ , maStatusText(this, VclResId( SV_PRINT_PRT_STATUS_TXT ) )
+ , maLocation( this, VclResId( SV_PRINT_PRT_LOCATION ) )
+ , maLocText( this, VclResId( SV_PRINT_PRT_LOCATION_TXT ) )
+ , maComment( this, VclResId( SV_PRINT_PRT_COMMENT ) )
+ , maCommentText( this, VclResId( SV_PRINT_PRT_COMMENT_TXT ) )
+ , maToFileBox( this, VclResId( SV_PRINT_PRT_TOFILE ) )
+{
+ FreeResource();
+}
+
+PrintDialog::PrinterTabPage::~PrinterTabPage()
+{
+}
+
+PrintDialog::JobTabPage::JobTabPage( Window* i_pParent, const ResId& rResId )
+ : TabPage( i_pParent, rResId )
+ , maPrintRange( this, VclResId( SV_PRINT_RANGE ) )
+ , maAllButton( this, VclResId( SV_PRINT_ALL ) )
+ , maPagesButton( this, VclResId( SV_PRINT_PAGERANGE ) )
+ , maSelectionButton( this, VclResId( SV_PRINT_SELECTION ) )
+ , maPagesEdit( this, VclResId( SV_PRINT_PAGERANGE_EDIT ) )
+ , maCopies( this, VclResId( SV_PRINT_COPIES ) )
+ , maCopyCount( this, VclResId( SV_PRINT_COPYCOUNT ) )
+ , maCopyCountField( this, VclResId( SV_PRINT_COPYCOUNT_FIELD ) )
+ , maCollateBox( this, VclResId( SV_PRINT_COLLATE ) )
+ , maCollateImage( this, VclResId( SV_PRINT_COLLATE_IMAGE ) )
+ , maCollateImg( VclResId( SV_PRINT_COLLATE_IMG ) )
+ , maCollateHCImg( VclResId( SV_PRINT_COLLATE_HC_IMG ) )
+ , maNoCollateImg( VclResId( SV_PRINT_NOCOLLATE_IMG ) )
+ , maNoCollateHCImg( VclResId( SV_PRINT_NOCOLLATE_HC_IMG ) )
+{
+ FreeResource();
+}
+
+PrintDialog::JobTabPage::~JobTabPage()
+{
+}
+
+PrintDialog::PrintDialog( Window* i_pParent, const boost::shared_ptr& i_rListener )
+ : ModalDialog( i_pParent, VclResId( SV_DLG_PRINT ) )
+ , maOKButton( this, VclResId( SV_PRINT_OK ) )
+ , maCancelButton( this, VclResId( SV_PRINT_CANCEL ) )
+ , maPreviewWindow( this, VclResId( SV_PRINT_PAGE_PREVIEW ) )
+ , maPageText( this, VclResId( SV_PRINT_PAGE_TXT ) )
+ , maPageScrollbar( this, VclResId( SV_PRINT_PAGE_SCROLL ) )
+ , maTabCtrl( this, VclResId( SV_PRINT_TABCTRL ) )
+ , maPrinterPage( &maTabCtrl, VclResId( SV_PRINT_TAB_PRINTER ) )
+ , maJobPage( &maTabCtrl, VclResId( SV_PRINT_TAB_JOB ) )
+ , maButtonLine( this, VclResId( SV_PRINT_BUTTONLINE ) )
+ , maPListener( i_rListener )
+ , mnCurPage( 0 )
+ , mnCachedPages( 0 )
+{
+ FreeResource();
+
+ // insert the tab pages
+ maTabCtrl.InsertPage( SV_PRINT_PAGE_PREVIEW, maPrinterPage.GetText() );
+ maTabCtrl.SetTabPage( SV_PRINT_PAGE_PREVIEW, &maPrinterPage );
+ maTabCtrl.InsertPage( SV_PRINT_TAB_JOB, maJobPage.GetText() );
+ maTabCtrl.SetTabPage( SV_PRINT_TAB_JOB, &maJobPage );
+
+ maPageStr = maPageText.GetText();
+ // save space for the preview window
+ maPreviewSpace = Rectangle( maPreviewWindow.GetPosPixel(), maPreviewWindow.GetSizePixel() );
+ // get the first page
+ preparePreview();
+
+ // set up the scrollbar for the preview pages
+ maPageScrollbar.SetScrollHdl( LINK( this, PrintDialog, ScrollHdl ) );
+ maPageScrollbar.SetEndScrollHdl( LINK( this, PrintDialog, ScrollEndHdl ) );
+ maPageScrollbar.EnableDrag( TRUE );
+
+ // fill printer listbox
+ const std::vector< rtl::OUString >& rQueues( Printer::GetPrinterQueues() );
+ for( std::vector< rtl::OUString >::const_iterator it = rQueues.begin();
+ it != rQueues.end(); ++it )
+ {
+ maPrinterPage.maPrinters.InsertEntry( *it );
+ }
+ // select current printer
+ if( maPrinterPage.maPrinters.GetEntryPos( maPListener->getPrinter()->GetName() ) != LISTBOX_ENTRY_NOTFOUND )
+ maPrinterPage.maPrinters.SelectEntry( maPListener->getPrinter()->GetName() );
+ else
+ {
+ // fall back to default printer
+ maPrinterPage.maPrinters.SelectEntry( Printer::GetDefaultPrinterName() );
+ maPListener->setPrinter( boost::shared_ptr( new Printer( Printer::GetDefaultPrinterName() ) ) );
+ }
+ // update the text fields for the printer
+ updatePrinterText();
+
+ // set a select handler
+ maPrinterPage.maPrinters.SetSelectHdl( LINK( this, PrintDialog, SelectHdl ) );
+
+ // setup page range edit
+ rtl::OUStringBuffer aBuf( 16 );
+ aBuf.append( sal_Unicode('1') );
+ if( mnCachedPages > 1 )
+ {
+ aBuf.append( sal_Unicode('-') );
+ aBuf.append( mnCachedPages );
+ }
+ maJobPage.maPagesEdit.SetText( aBuf.makeStringAndClear() );
+
+ // setup click handler on the various buttons
+ maJobPage.maCollateBox.SetClickHdl( LINK( this, PrintDialog, ClickHdl ) );
+ maJobPage.maAllButton.SetClickHdl( LINK( this, PrintDialog, ClickHdl ) );
+ maJobPage.maSelectionButton.SetClickHdl( LINK( this, PrintDialog, ClickHdl ) );
+ maJobPage.maPagesButton.SetClickHdl( LINK( this, PrintDialog, ClickHdl ) );
+ maPrinterPage.maSetupButton.SetClickHdl( LINK( this, PrintDialog, ClickHdl ) );
+
+ // setup modify hdl
+ maJobPage.maCopyCountField.SetModifyHdl( LINK( this, PrintDialog, ModifyHdl ) );
+
+ // setup dependencies
+ checkControlDependencies();
+}
+
+PrintDialog::~PrintDialog()
+{
+}
+
+bool PrintDialog::isPrintToFile()
+{
+ return maPrinterPage.maToFileBox.IsChecked();
+}
+
+int PrintDialog::getCopyCount()
+{
+ return maJobPage.maCopyCountField.GetValue();
+}
+
+bool PrintDialog::isCollate()
+{
+ return maJobPage.maCopyCountField.GetValue() > 1 ? maJobPage.maCollateBox.IsChecked() : FALSE;
+}
+
+MultiSelection PrintDialog::getPageSelection()
+{
+ if( maJobPage.maPagesButton.IsChecked() )
+ return MultiSelection( maJobPage.maPagesEdit.GetText() );
+ else if( maJobPage.maAllButton.IsChecked() )
+ {
+ MultiSelection aSel( Range( 1, maPListener->getPageCount() ) );
+ aSel.SelectAll();
+ return aSel;
+ }
+ DBG_ERROR( "NYI: Selection" );
+ return MultiSelection();
+}
+
+void PrintDialog::checkControlDependencies()
+{
+ if( maJobPage.maCopyCountField.GetValue() > 1 )
+ maJobPage.maCollateBox.Enable( TRUE );
+ else
+ maJobPage.maCollateBox.Enable( FALSE );
+
+ maJobPage.maPagesEdit.Enable( maJobPage.maPagesButton.IsChecked() );
+ Image aImg( maJobPage.maCollateBox.IsChecked() ? maJobPage.maCollateImg : maJobPage.maNoCollateImg );
+ if( GetSettings().GetStyleSettings().GetFieldColor().IsDark() )
+ aImg = maJobPage.maCollateBox.IsChecked() ? maJobPage.maCollateHCImg : maJobPage.maNoCollateHCImg;
+
+ // adjust position and size of image
+ maJobPage.maCollateImage.SetSizePixel( aImg.GetSizePixel() );
+ Point aPos( maJobPage.maCollateImage.GetPosPixel() );
+ aPos.Y() = maJobPage.maCollateBox.GetPosPixel().Y();
+ aPos.Y() -= (aImg.GetSizePixel().Height() - maJobPage.maCollateBox.GetSizePixel().Height())/2;
+ maJobPage.maCollateImage.SetPosPixel( aPos );
+ maJobPage.maCollateImage.SetImage( aImg );
+
+ // enable setup button only for printers that can be setup
+ maPrinterPage.maSetupButton.Enable( maPListener->getPrinter()->HasSupport( SUPPORT_SETUPDIALOG ) );
+}
+
+void PrintDialog::updatePrinterText()
+{
+ const QueueInfo* pInfo = Printer::GetQueueInfo( maPrinterPage.maPrinters.GetSelectEntry(), true );
+ if( pInfo )
+ {
+ maPrinterPage.maTypeText.SetText( pInfo->GetDriver() );
+ // FIXME: status message
+ // maJobPage.maStatusText.SetText();
+ maPrinterPage.maLocText.SetText( pInfo->GetLocation() );
+ maPrinterPage.maCommentText.SetText( pInfo->GetComment() );
+ }
+}
+
+static rtl::OUString searchAndReplace( const rtl::OUString& i_rOrig, const char* i_pRepl, sal_Int32 i_nReplLen, sal_Int32 i_nReplacement )
+{
+ sal_Int32 nPos = i_rOrig.indexOfAsciiL( i_pRepl, i_nReplLen );
+ if( nPos != -1 )
+ {
+ rtl::OUStringBuffer aBuf( i_rOrig.getLength() );
+ aBuf.append( i_rOrig.getStr(), nPos );
+ aBuf.append( i_nReplacement );
+ if( nPos + i_nReplLen < i_rOrig.getLength() )
+ aBuf.append( i_rOrig.getStr() + nPos + i_nReplLen );
+ return aBuf.makeStringAndClear();
+ }
+ return i_rOrig;
+}
+
+void PrintDialog::setPreviewText( sal_Int32 nSetPage )
+{
+ rtl::OUString aNewText( searchAndReplace( maPageStr, "%p", 2, nSetPage+1 ) );
+ aNewText = searchAndReplace( aNewText, "%n", 2, mnCachedPages );
+ maPageText.SetText( aNewText );
+}
+
+void PrintDialog::preparePreview()
+{
+ sal_Int32 nPages = maPListener->getPageCount();
+ mnCachedPages = nPages;
+
+ setPreviewText( mnCurPage );
+
+ maPageScrollbar.SetRange( Range( 0, nPages-1 ) );
+ maPageScrollbar.SetThumbPos( mnCurPage );
+
+ boost::shared_ptr aPrt( maPListener->getPrinter() );
+
+
+ const MapMode aMapMode( MAP_100TH_MM );
+ Size aPageSize;
+ JobSetup aPageSetup( aPrt->GetJobSetup() );
+ maPListener->getPageParameters( mnCurPage, aPageSetup, aPageSize );
+ ImplUpdateJobSetupPaper( aPageSetup ); // fill in physical paper size
+ Size aPaperSize( aPageSetup.ImplGetConstData()->mnPaperWidth,
+ aPageSetup.ImplGetConstData()->mnPaperHeight );
+ if( aPageSetup.ImplGetConstData()->meOrientation == ORIENTATION_LANDSCAPE )
+ {
+ aPaperSize.Width() = aPageSetup.ImplGetConstData()->mnPaperHeight;
+ aPaperSize.Height() = aPageSetup.ImplGetConstData()->mnPaperWidth;
+ }
+
+ aPrt->Push();
+ aPrt->EnableOutput( FALSE );
+ aPrt->SetMapMode( aMapMode );
+
+ GDIMetaFile aMtf;
+ aMtf.SetPrefSize( aPageSize );
+ aMtf.SetPrefMapMode( aMapMode );
+ aMtf.Record( &(*aPrt) );
+
+ maPListener->printPage( mnCurPage );
+
+ aMtf.Stop();
+ aMtf.WindStart();
+ aPrt->Pop();
+
+ Size aPreviewSize;
+ Point aPreviewPos = maPreviewSpace.TopLeft();
+ const long nW = maPreviewSpace.GetSize().Width();
+ const long nH = maPreviewSpace.GetSize().Height();
+ if( aPaperSize.Width() > aPaperSize.Height() )
+ {
+ aPreviewSize = Size( nW, nW * aPaperSize.Height() / aPaperSize.Width() );
+ aPreviewPos.Y() += (maPreviewSpace.GetHeight() - aPreviewSize.Height())/2;
+ }
+ else
+ {
+ aPreviewSize = Size( nH * aPaperSize.Width() / aPaperSize.Height(), nH );
+ aPreviewPos.X() += (maPreviewSpace.GetWidth() - aPreviewSize.Width())/2;
+ }
+ maPreviewWindow.SetPosSizePixel( aPreviewPos, aPreviewSize );
+ const Size aLogicSize( maPreviewWindow.PixelToLogic( maPreviewWindow.GetSizePixel(), MapMode( MAP_100TH_MM ) ) );
+ aMtf.Scale( double(aLogicSize.Width())/double(aPaperSize.Width()),
+ double(aLogicSize.Height())/double(aPaperSize.Height()) );
+ maPreviewWindow.setPreview( aMtf );
+}
+
+IMPL_LINK( PrintDialog, ScrollHdl, ScrollBar*, pScrBar )
+{
+ if( pScrBar == &maPageScrollbar )
+ {
+ sal_Int32 nNewPage = static_cast( maPageScrollbar.GetThumbPos() );
+ setPreviewText( nNewPage );
+ }
+ return 0;
+}
+
+IMPL_LINK( PrintDialog, ScrollEndHdl, ScrollBar*, pScrBar )
+{
+ if( pScrBar == &maPageScrollbar )
+ {
+ sal_Int32 nNewPage = static_cast( maPageScrollbar.GetThumbPos() );
+ if( nNewPage != mnCurPage )
+ {
+ mnCurPage = nNewPage;
+ preparePreview();
+ }
+ }
+ return 0;
+}
+
+IMPL_LINK( PrintDialog, SelectHdl, ListBox*, pBox )
+{
+ if( pBox == &maPrinterPage.maPrinters )
+ {
+ // set new printer
+ maPListener->setPrinter( boost::shared_ptr( new Printer( maPrinterPage.maPrinters.GetSelectEntry() ) ) );
+ // update text fields
+ updatePrinterText();
+ }
+ return 0;
+}
+
+IMPL_LINK( PrintDialog, ClickHdl, Button*, pButton )
+{
+ if( pButton == &maPrinterPage.maSetupButton )
+ {
+ maPListener->getPrinter()->Setup( this );
+ }
+ checkControlDependencies();
+ return 0;
+}
+
+IMPL_LINK( PrintDialog, ModifyHdl, Edit*, EMPTYARG )
+{
+ checkControlDependencies();
+ return 0;
+}
+
--
cgit
From 0e6b718affdb8a17e58ff3fa0599cc32ea311f13 Mon Sep 17 00:00:00 2001
From: Philipp Lohmann
Date: Wed, 1 Oct 2008 18:22:22 +0000
Subject: #i92516# migrate CWS printerpullpages to svn
---
sfx2/source/view/viewprn.cxx | 146 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 141 insertions(+), 5 deletions(-)
diff --git a/sfx2/source/view/viewprn.cxx b/sfx2/source/view/viewprn.cxx
index 0d496c7ccfe7..734673d75525 100644
--- a/sfx2/source/view/viewprn.cxx
+++ b/sfx2/source/view/viewprn.cxx
@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: viewprn.cxx,v $
- * $Revision: 1.36 $
+ * $Revision: 1.36.128.3 $
*
* This file is part of OpenOffice.org.
*
@@ -33,6 +33,8 @@
#include
#include
+#include "com/sun/star/view/XRenderable.hpp"
+
#include
#ifndef _MSGBOX_HXX //autogen
#include
@@ -64,13 +66,137 @@
#include
#include
+#include "toolkit/awt/vclxdevice.hxx"
+
#include "view.hrc"
#include "helpid.hrc"
+using namespace com::sun::star;
+using namespace com::sun::star::uno;
+
TYPEINIT1(SfxPrintingHint, SfxHint);
// -----------------------------------------------------------------------
+class SfxPrinterListener : public vcl::PrinterListener
+{
+ Reference< frame::XModel > mxModel;
+public:
+ SfxPrinterListener( const Reference< frame::XModel >& i_xModel )
+ : mxModel( i_xModel )
+ {
+ }
+
+ virtual ~SfxPrinterListener();
+
+ virtual int getPageCount() const;
+ virtual void getPageParameters( int i_nPage, JobSetup& o_rPageSetup, Size& o_rPageSize ) const;
+ virtual void printPage( int i_nPage ) const;
+ virtual void setListeners(); // optional
+ virtual void jobFinished(); // optional
+};
+
+SfxPrinterListener::~SfxPrinterListener()
+{
+}
+
+int SfxPrinterListener::getPageCount() const
+{
+ int nPages = 0;
+ boost::shared_ptr pPrinter( getPrinter() );
+ if( mxModel.is() && pPrinter )
+ {
+ Reference< view::XRenderable > xRenderable( mxModel, UNO_QUERY );
+ if( xRenderable.is() )
+ {
+ VCLXDevice* pXDevice = new VCLXDevice();
+ pXDevice->SetOutputDevice( &(*pPrinter) );
+
+ Sequence< beans::PropertyValue > aRenderOptions( 1 );
+ aRenderOptions[ 0 ].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RenderDevice" ) );
+ aRenderOptions[ 0 ].Value <<= Reference< awt::XDevice >( pXDevice );
+
+ nPages = xRenderable->getRendererCount( makeAny( mxModel ), aRenderOptions );
+ }
+ }
+ return nPages;
+}
+
+void SfxPrinterListener::getPageParameters( int i_nPage, JobSetup& o_rPageSetup, Size& o_rPageSize ) const
+{
+ Size aPageSize;
+ boost::shared_ptr pPrinter( getPrinter() );
+
+ // FIXME: get page setup from writer
+ o_rPageSetup = pPrinter->GetJobSetup();
+
+ if( mxModel.is() && pPrinter )
+ {
+ Reference< view::XRenderable > xRenderable( mxModel, UNO_QUERY );
+ if( xRenderable.is() )
+ {
+ VCLXDevice* pXDevice = new VCLXDevice();
+ pXDevice->SetOutputDevice( &(*pPrinter) );
+
+ Sequence< beans::PropertyValue > aRenderOptions( 1 );
+ aRenderOptions[ 0 ].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RenderDevice" ) );
+ aRenderOptions[ 0 ].Value <<= Reference< awt::XDevice >( pXDevice );
+
+ sal_Int32 nPages = xRenderable->getRendererCount( makeAny( mxModel ), aRenderOptions );
+
+ if( i_nPage < nPages )
+ {
+ Sequence< beans::PropertyValue > aRenderProps( xRenderable->getRenderer( i_nPage, makeAny( mxModel ), aRenderOptions ) );
+
+ for( sal_Int32 nProperty = 0, nPropertyCount = aRenderProps.getLength(); nProperty < nPropertyCount; ++nProperty )
+ {
+ if( aRenderProps[ nProperty ].Name == rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PageSize" ) ) )
+ {
+ awt::Size aSize;
+ aRenderProps[ nProperty].Value >>= aSize;
+ aPageSize.Width() = aSize.Width;
+ aPageSize.Height() = aSize.Height;
+ }
+ }
+ }
+ }
+ }
+ o_rPageSize = aPageSize;
+}
+
+void SfxPrinterListener::printPage( int i_nPage ) const
+{
+ boost::shared_ptr pPrinter( getPrinter() );
+ if( mxModel.is() && pPrinter )
+ {
+ Reference< view::XRenderable > xRenderable( mxModel, UNO_QUERY );
+ if( xRenderable.is() )
+ {
+ VCLXDevice* pXDevice = new VCLXDevice();
+ pXDevice->SetOutputDevice( &(*pPrinter) );
+
+ Sequence< beans::PropertyValue > aRenderOptions( 1 );
+ aRenderOptions[ 0 ].Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RenderDevice" ) );
+ aRenderOptions[ 0 ].Value <<= Reference< awt::XDevice >( pXDevice );
+
+ sal_Int32 nPages = xRenderable->getRendererCount( makeAny( mxModel ), aRenderOptions );
+
+ if( i_nPage < nPages )
+ xRenderable->render( i_nPage, makeAny( mxModel ), aRenderOptions );
+ }
+ }
+}
+
+void SfxPrinterListener::setListeners()
+{
+}
+
+void SfxPrinterListener::jobFinished()
+{
+}
+
+// -----------------------------------------------------------------------
+
void DisableRanges( PrintDialog& rDlg, SfxPrinter* pPrinter )
/* [Beschreibung]
@@ -401,7 +527,6 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq )
{
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- case SID_PRINTDOC:
case SID_SETUPPRINTER:
case SID_PRINTER_NAME :
{
@@ -708,8 +833,7 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq )
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- case SID_PRINTDOCDIRECT:
+ //case SID_PRINTDOCDIRECT:
{
if ( SID_PRINTDOCDIRECT == nId )
{
@@ -810,8 +934,20 @@ void SfxViewShell::ExecPrint_Impl( SfxRequest &rReq )
}
delete pPrintDlg;
- break;
}
+
+ break;
+
+ case SID_PRINTDOC:
+ case SID_PRINTDOCDIRECT:
+ {
+ Reference< frame::XModel > xModel( GetObjectShell()->GetModel() );
+ boost::shared_ptr pListener( new SfxPrinterListener( xModel ) );
+ // FIXME: job setup
+ // FIXME: job properties
+ Printer::PrintJob( pListener, JobSetup(), com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet >() );
+ }
+ break;
}
}
--
cgit
From fedda01fbccad8e6322b469a03fde52d0a905851 Mon Sep 17 00:00:00 2001
From: Philipp Lohmann
Date: Wed, 1 Oct 2008 18:22:22 +0000
Subject: #i92516# migrate CWS printerpullpages to svn
---
default_images/vcl/source/src/collate.png | Bin 0 -> 672 bytes
default_images/vcl/source/src/collate_h.png | Bin 0 -> 380 bytes
default_images/vcl/source/src/ncollate.png | Bin 0 -> 635 bytes
default_images/vcl/source/src/ncollate_h.png | Bin 0 -> 393 bytes
4 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 default_images/vcl/source/src/collate.png
create mode 100644 default_images/vcl/source/src/collate_h.png
create mode 100644 default_images/vcl/source/src/ncollate.png
create mode 100644 default_images/vcl/source/src/ncollate_h.png
diff --git a/default_images/vcl/source/src/collate.png b/default_images/vcl/source/src/collate.png
new file mode 100644
index 000000000000..edbd5ea93584
Binary files /dev/null and b/default_images/vcl/source/src/collate.png differ
diff --git a/default_images/vcl/source/src/collate_h.png b/default_images/vcl/source/src/collate_h.png
new file mode 100644
index 000000000000..f4dc23974343
Binary files /dev/null and b/default_images/vcl/source/src/collate_h.png differ
diff --git a/default_images/vcl/source/src/ncollate.png b/default_images/vcl/source/src/ncollate.png
new file mode 100644
index 000000000000..a927de86bcf0
Binary files /dev/null and b/default_images/vcl/source/src/ncollate.png differ
diff --git a/default_images/vcl/source/src/ncollate_h.png b/default_images/vcl/source/src/ncollate_h.png
new file mode 100644
index 000000000000..dde8eba274fc
Binary files /dev/null and b/default_images/vcl/source/src/ncollate_h.png differ
--
cgit
--
cgit
From 3dd88a3b1edc9ceb806ce60246af1473354d207c Mon Sep 17 00:00:00 2001
From: Philipp Lohmann
Date: Mon, 6 Oct 2008 12:41:58 +0000
Subject: fix a build problem
---
sc/source/ui/view/olkact.cxx | 2 +-
sc/source/ui/view/prevwsh2.cxx | 2 +-
sc/source/ui/view/viewfun3.cxx | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/sc/source/ui/view/olkact.cxx b/sc/source/ui/view/olkact.cxx
index 31f5297e92fe..3feb69044f43 100644
--- a/sc/source/ui/view/olkact.cxx
+++ b/sc/source/ui/view/olkact.cxx
@@ -229,7 +229,7 @@
//#define _SVDLAYER_HXX
//#define _SVDRAG_HXX
#define _SVINCVW_HXX
-#define _SV_MULTISEL_HXX
+//#define _SV_MULTISEL_HXX
#define _SVRTV_HXX
#define _SVTABBX_HXX
diff --git a/sc/source/ui/view/prevwsh2.cxx b/sc/source/ui/view/prevwsh2.cxx
index 157f4bffa4ec..c5266b166151 100644
--- a/sc/source/ui/view/prevwsh2.cxx
+++ b/sc/source/ui/view/prevwsh2.cxx
@@ -67,7 +67,7 @@
//#define _FSYS_HXX
//#define _STREAM_HXX
#define _CACHESTR_HXX
-#define _SV_MULTISEL_HXX
+//#define _SV_MULTISEL_HXX
//SV
//#define _CLIP_HXX ***
diff --git a/sc/source/ui/view/viewfun3.cxx b/sc/source/ui/view/viewfun3.cxx
index 3a3fbeb85850..205274018652 100644
--- a/sc/source/ui/view/viewfun3.cxx
+++ b/sc/source/ui/view/viewfun3.cxx
@@ -142,7 +142,7 @@
#define _SVDRAG_HXX
#define _SVINCVW_HXX
-#define _SV_MULTISEL_HXX
+//#define _SV_MULTISEL_HXX
#define _SVRTV_HXX
#define _SVTABBX_HXX
#define _SVTREEBOX_HXX
--
cgit
From d47140e61cc0f58dec4c93a2eb801b03be3fa0ff Mon Sep 17 00:00:00 2001
From: Philipp Lohmann
Date: Thu, 30 Oct 2008 14:31:29 +0000
Subject: #i92516# prepare app specific print dialog elements
---
vcl/inc/vcl/print.hxx | 40 +++++--
vcl/inc/vcl/prndlg.hxx | 8 +-
vcl/source/gdi/print3.cxx | 173 +++++++++++++++++++++++------
vcl/source/window/printdlg.cxx | 239 ++++++++++++++++++++++++++++++++++++++---
4 files changed, 403 insertions(+), 57 deletions(-)
diff --git a/vcl/inc/vcl/print.hxx b/vcl/inc/vcl/print.hxx
index e6199437ca4a..e939c5a09705 100644
--- a/vcl/inc/vcl/print.hxx
+++ b/vcl/inc/vcl/print.hxx
@@ -41,7 +41,7 @@
#include "tools/stream.hxx"
#include "tools/multisel.hxx"
-#include "com/sun/star/beans/XPropertySet.hpp"
+#include "com/sun/star/beans/PropertyValue.hpp"
#include
@@ -438,15 +438,13 @@ public:
*/
static void PrintJob( const boost::shared_ptr& i_pListener,
- const JobSetup& i_rInitSetup,
- const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet >& i_xJobOptions
+ const JobSetup& i_rInitSetup
);
// implementation detail of PrintJob being asynchronous
// not exported, not usable outside vcl
static void SAL_DLLPRIVATE ImplPrintJob( const boost::shared_ptr& i_pListener,
- const JobSetup& i_rInitSetup,
- const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet >& i_xJobOptions
+ const JobSetup& i_rInitSetup
);
};
@@ -462,9 +460,33 @@ public:
virtual ~PrinterListener();
const boost::shared_ptr& getPrinter() const;
- const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet >& getJobParameters() const;
const MultiSelection& getPageSelection() const;
+ /* for implementations: get current job properties as changed by e.g. print dialog
+ this gets the current set of properties initially told to Printer::PrintJob
+
+ For convenience a second sequence will be merged in to get a combined sequence.
+ In case of duplicate property names, the value of i_MergeList wins.
+ */
+ com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >
+ getJobProperties( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& i_rMergeList ) const;
+
+ /* get the PorpertyValue of a Property
+ */
+ com::sun::star::beans::PropertyValue* getValue( const rtl::OUString& rPropertyName );
+
+ /* return the currently active UI options. These are the same passed to setUIOptions.
+ */
+ const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& getUIOptions() const;
+ /* set possible UI options. should only be done once before passing the PrinterListener
+ to Printer::PrintJob
+ */
+ void setUIOptions( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& );
+ /* enable/disable an option; this can be used to implement dialog logic.
+ */
+ void enableUIOption( const rtl::OUString& rPropName, bool bEnable );
+ bool isUIOptionEnabled( const rtl::OUString& rPropName ) const;
+
virtual int getPageCount() const = 0; // must be overloaded by the app
/* get the page parameters, namely the jobsetup that should be active for the page
(describing among others the physical page size) and the "page size". In writer
@@ -473,17 +495,17 @@ public:
possibly adjusting the page size to fit. That means the page size can be different from
the paper size.
*/
- virtual void getPageParameters( int i_nPage, JobSetup& o_rPageSetup, Size& o_rPageSize ) const = 0; // must be overloaded by the app, return page size in 1/100th mm
+ // must be overloaded by the app, return page size in 1/100th mm
+ virtual com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > getPageParameters( int i_nPage ) const = 0;
virtual void printPage( int i_nPage ) const = 0; // must be overloaded by the app
- virtual void setListeners(); // optionally set listeners on mxJobParameters
virtual void jobFinished(); // optionally release resources bound to the job
void printFilteredPage( int i_nPage );
// implementation details, not usable outsid vcl
void SAL_DLLPRIVATE setPrinter( const boost::shared_ptr& );
- void SAL_DLLPRIVATE setJobParameters( const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySet >& );
void SAL_DLLPRIVATE setPageSelection( const MultiSelection& );
+ void SAL_DLLPRIVATE setOptionChangeHdl( const Link& );
};
}
diff --git a/vcl/inc/vcl/prndlg.hxx b/vcl/inc/vcl/prndlg.hxx
index f5b4a35e0331..cbd6125aaca9 100644
--- a/vcl/inc/vcl/prndlg.hxx
+++ b/vcl/inc/vcl/prndlg.hxx
@@ -49,7 +49,7 @@
#include "tools/multisel.hxx"
#include
-
+#include