diff options
author | Noel Power <noel.power@novell.com> | 2012-04-23 13:33:15 +0100 |
---|---|---|
committer | Noel Power <noel.power@novell.com> | 2012-04-23 13:35:31 +0100 |
commit | 17c8f6745f9f98013c1b08de8ec03be66546c7fc (patch) | |
tree | 3a9ace52acac3c6b41471a4d0bd8deecbfd18559 | |
parent | 3120273ab10e9e8b765e2d13a90b62102a45c56f (diff) |
support Sheets.PrintPreview bnc#757844
there is still a little wrinkle, the preview shell always shows what sheets are selected, it's currently not possible to specify the sheets to preview
-rw-r--r-- | oovbaapi/ooo/vba/excel/XWorksheets.idl | 1 | ||||
-rw-r--r-- | sc/source/ui/vba/vbaworksheets.cxx | 7 | ||||
-rw-r--r-- | sc/source/ui/vba/vbaworksheets.hxx | 1 | ||||
-rw-r--r-- | vbahelper/source/vbahelper/vbahelper.cxx | 13 |
4 files changed, 21 insertions, 1 deletions
diff --git a/oovbaapi/ooo/vba/excel/XWorksheets.idl b/oovbaapi/ooo/vba/excel/XWorksheets.idl index 17c80ce4547a..cca74f908779 100644 --- a/oovbaapi/ooo/vba/excel/XWorksheets.idl +++ b/oovbaapi/ooo/vba/excel/XWorksheets.idl @@ -45,6 +45,7 @@ interface XWorksheets void PrintOut( [in] any From, [in] any To, [in] any Copies, [in] any Preview, [in] any ActivePrinter, [in] any PrintToFile, [in] any Collate, [in] any PrToFileName ); void Select( [in] any Replace ); void Copy( [in] any Before, [in] any After); + void PrintPreview( [in] any EnableChanges ); }; }; }; }; diff --git a/sc/source/ui/vba/vbaworksheets.cxx b/sc/source/ui/vba/vbaworksheets.cxx index 89f169a3e8bf..3d218fab8700 100644 --- a/sc/source/ui/vba/vbaworksheets.cxx +++ b/sc/source/ui/vba/vbaworksheets.cxx @@ -537,4 +537,11 @@ bool ScVbaWorksheets::nameExists( uno::Reference <sheet::XSpreadsheetDocument>& return false; } +void ScVbaWorksheets::PrintPreview( const css::uno::Any& EnableChanges ) throw (css::uno::RuntimeException) +{ + // need test, print preview current active sheet + // !! TODO !! get view shell from controller + PrintPreviewHelper( EnableChanges, excel::getBestViewShell( mxModel ) ); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/vba/vbaworksheets.hxx b/sc/source/ui/vba/vbaworksheets.hxx index c34ec0822788..b184d7887493 100644 --- a/sc/source/ui/vba/vbaworksheets.hxx +++ b/sc/source/ui/vba/vbaworksheets.hxx @@ -73,6 +73,7 @@ public: virtual css::uno::Any createCollectionObject( const css::uno::Any& aSource ); virtual void SAL_CALL Select( const css::uno::Any& Replace ) throw (css::uno::RuntimeException); virtual void SAL_CALL Copy ( const css::uno::Any& Before, const css::uno::Any& After) throw (css::uno::RuntimeException); + virtual void SAL_CALL PrintPreview( const css::uno::Any& EnableChanges ) throw (css::uno::RuntimeException); // ScVbaWorksheets_BASE virtual css::uno::Any SAL_CALL Item( const css::uno::Any& Index1, const css::uno::Any& Index2 ) throw (css::uno::RuntimeException); diff --git a/vbahelper/source/vbahelper/vbahelper.cxx b/vbahelper/source/vbahelper/vbahelper.cxx index b91ef85e126d..0ef22fd4fa43 100644 --- a/vbahelper/source/vbahelper/vbahelper.cxx +++ b/vbahelper/source/vbahelper/vbahelper.cxx @@ -473,7 +473,18 @@ void PrintOutHelper( SfxViewShell* pViewShell, const uno::Any& From, const uno:: void PrintPreviewHelper( const css::uno::Any& /*EnableChanges*/, SfxViewShell* pViewShell ) { - dispatchExecute( pViewShell, SID_VIEWSHELL1 ); + SfxViewFrame* pViewFrame = NULL; + if ( pViewShell ) + pViewFrame = pViewShell->GetViewFrame(); + if ( pViewFrame ) + { + if ( !pViewFrame->GetFrame().IsInPlace() ) + { + dispatchExecute( pViewShell, SID_VIEWSHELL1 ); + while ( isInPrintPreview( pViewFrame ) ) + Application::Yield(); + } + } } bool extractBoolFromAny( const uno::Any& rAny ) throw (uno::RuntimeException) |