print range changes for basic ide
This commit is contained in:
parent
889de0ba9a
commit
c191158982
5 changed files with 136 additions and 30 deletions
|
@ -58,6 +58,7 @@
|
|||
#define RID_DLG_NEWLIB ( RID_BASICIDE_START + 42 )
|
||||
#define RID_DLG_EXPORT ( RID_BASICIDE_START + 43 )
|
||||
#define RID_POPUP_DLGED ( RID_BASICIDE_START + 62 )
|
||||
#define RID_PRINTDLG_STRLIST ( RID_BASICIDE_START + 78 )
|
||||
|
||||
#define RID_IMG_LOCKED_HC ( RID_BASICIDE_START + 6 )
|
||||
#define RID_IMGBTN_REMOVEWATCH ( RID_BASICIDE_START + 8 )
|
||||
|
|
43
basctl/source/basicide/basicprint.src
Normal file
43
basctl/source/basicide/basicprint.src
Normal file
|
@ -0,0 +1,43 @@
|
|||
/*************************************************************************
|
||||
*
|
||||
* 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: basidesh.src,v $
|
||||
* $Revision: 1.107 $
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
************************************************************************/
|
||||
|
||||
#include <basidesh.hrc>
|
||||
|
||||
StringArray RID_PRINTDLG_STRLIST
|
||||
{
|
||||
ItemList [en-US] =
|
||||
{
|
||||
< "Print range"; >;
|
||||
< "All ~Pages"; >;
|
||||
< "Print all pages of the printable content."; >;
|
||||
< "Pa~ges"; >;
|
||||
< "Print only some pages of the printable content."; >;
|
||||
};
|
||||
};
|
|
@ -31,38 +31,70 @@
|
|||
|
||||
#include "basicrenderable.hxx"
|
||||
#include "bastypes.hxx"
|
||||
#include "basidesh.hrc"
|
||||
|
||||
#include "com/sun/star/awt/XDevice.hpp"
|
||||
#include "toolkit/awt/vclxdevice.hxx"
|
||||
#include "vcl/print.hxx"
|
||||
#include "tools/multisel.hxx"
|
||||
#include "tools/resary.hxx"
|
||||
|
||||
using namespace com::sun::star;
|
||||
using namespace com::sun::star::uno;
|
||||
using namespace basicide;
|
||||
|
||||
BasicRenderable::BasicRenderable( IDEBaseWindow* pWin )
|
||||
: cppu::WeakComponentImplHelper1< com::sun::star::view::XRenderable >( maMutex )
|
||||
, mpWindow( pWin )
|
||||
{
|
||||
ResStringArray aStrings( IDEResId( RID_PRINTDLG_STRLIST ) );
|
||||
DBG_ASSERT( aStrings.Count() >= 5, "resource incomplete" );
|
||||
if( aStrings.Count() < 5 ) // bad resource ?
|
||||
return;
|
||||
|
||||
m_aUIProperties.realloc( 3 );
|
||||
|
||||
// create Subgroup for print range
|
||||
m_aUIProperties[0].Value = getSubgroupControlOpt( rtl::OUString( aStrings.GetString( 0 ) ), rtl::OUString(), true , true);
|
||||
|
||||
// create a choice for the range to print
|
||||
rtl::OUString aPrintContentName( RTL_CONSTASCII_USTRINGPARAM( "PrintContent" ) );
|
||||
Sequence< rtl::OUString > aChoices( 2 );
|
||||
Sequence< rtl::OUString > aHelpTexts( 2 );
|
||||
aChoices[0] = aStrings.GetString( 1 );
|
||||
aHelpTexts[0] = aStrings.GetString( 2 );
|
||||
aChoices[1] = aStrings.GetString( 3 );
|
||||
aHelpTexts[1] = aStrings.GetString( 4 );
|
||||
m_aUIProperties[1].Value = getChoiceControlOpt( rtl::OUString(),
|
||||
aHelpTexts,
|
||||
aPrintContentName,
|
||||
aChoices,
|
||||
0 );
|
||||
|
||||
// create a an Edit dependent on "Pages" selected
|
||||
m_aUIProperties[2].Value = getEditControlOpt( rtl::OUString(),
|
||||
rtl::OUString(),
|
||||
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PageRange" ) ),
|
||||
rtl::OUString(),
|
||||
&aPrintContentName, 1, sal_True
|
||||
);
|
||||
}
|
||||
|
||||
BasicRenderable::~BasicRenderable()
|
||||
{
|
||||
}
|
||||
|
||||
Printer* BasicRenderable::getPrinter ( const Sequence<beans::PropertyValue >& i_xOptions )
|
||||
Printer* BasicRenderable::getPrinter()
|
||||
{
|
||||
Printer* pPrinter = NULL;
|
||||
sal_Int32 nProps = i_xOptions.getLength();
|
||||
const beans::PropertyValue* pProps = i_xOptions.getConstArray();
|
||||
for( sal_Int32 i = 0; i < nProps; i++ )
|
||||
{
|
||||
if( pProps[i].Name.equalsAscii( "RenderDevice" ) )
|
||||
{
|
||||
Reference<awt::XDevice> xRenderDevice;
|
||||
Any aValue( getValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "RenderDevice" ) ) ) );
|
||||
Reference<awt::XDevice> xRenderDevice;
|
||||
|
||||
if( pProps[i].Value >>= xRenderDevice )
|
||||
{
|
||||
VCLXDevice* pDevice = VCLXDevice::GetImplementation(xRenderDevice);
|
||||
OutputDevice* pOut = pDevice ? pDevice->GetOutputDevice() : NULL;
|
||||
pPrinter = dynamic_cast<Printer*>(pOut);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( aValue >>= xRenderDevice )
|
||||
{
|
||||
VCLXDevice* pDevice = VCLXDevice::GetImplementation(xRenderDevice);
|
||||
OutputDevice* pOut = pDevice ? pDevice->GetOutputDevice() : NULL;
|
||||
pPrinter = dynamic_cast<Printer*>(pOut);
|
||||
}
|
||||
return pPrinter;
|
||||
}
|
||||
|
@ -71,12 +103,25 @@ sal_Int32 SAL_CALL BasicRenderable::getRendererCount (
|
|||
const Any&, const Sequence<beans::PropertyValue >& i_xOptions
|
||||
) throw (lang::IllegalArgumentException, RuntimeException)
|
||||
{
|
||||
processProperties( i_xOptions );
|
||||
|
||||
sal_Int32 nCount = 0;
|
||||
if( mpWindow )
|
||||
{
|
||||
Printer* pPrinter = getPrinter( i_xOptions );
|
||||
Printer* pPrinter = getPrinter();
|
||||
if( pPrinter )
|
||||
{
|
||||
nCount = mpWindow->countPages( pPrinter );
|
||||
sal_Int64 nContent = getIntValue( "PrintContent", -1 );
|
||||
if( nContent == 1 )
|
||||
{
|
||||
rtl::OUString aPageRange( getStringValue( "PageRange" ) );
|
||||
MultiSelection aSel( aPageRange );
|
||||
long nSelCount = aSel.GetSelectCount();
|
||||
if( nSelCount >= 0 && nSelCount < nCount )
|
||||
nCount = nSelCount;
|
||||
}
|
||||
}
|
||||
else
|
||||
throw lang::IllegalArgumentException();
|
||||
}
|
||||
|
@ -88,9 +133,11 @@ Sequence<beans::PropertyValue> SAL_CALL BasicRenderable::getRenderer (
|
|||
sal_Int32, const Any&, const Sequence<beans::PropertyValue>& i_xOptions
|
||||
) throw (lang::IllegalArgumentException, RuntimeException)
|
||||
{
|
||||
processProperties( i_xOptions );
|
||||
|
||||
Sequence< beans::PropertyValue > aVals;
|
||||
// insert page size here
|
||||
Printer* pPrinter = getPrinter( i_xOptions );
|
||||
Printer* pPrinter = getPrinter();
|
||||
// no renderdevice is legal; the first call is to get our print ui options
|
||||
if( pPrinter )
|
||||
{
|
||||
|
@ -104,6 +151,8 @@ Sequence<beans::PropertyValue> SAL_CALL BasicRenderable::getRenderer (
|
|||
aVals[0].Value <<= aSize;
|
||||
}
|
||||
|
||||
appendPrintUIOptions( aVals );
|
||||
|
||||
return aVals;
|
||||
}
|
||||
|
||||
|
@ -112,11 +161,27 @@ void SAL_CALL BasicRenderable::render (
|
|||
const Sequence<beans::PropertyValue>& i_xOptions
|
||||
) throw (lang::IllegalArgumentException, RuntimeException)
|
||||
{
|
||||
processProperties( i_xOptions );
|
||||
|
||||
if( mpWindow )
|
||||
{
|
||||
Printer* pPrinter = getPrinter( i_xOptions );
|
||||
Printer* pPrinter = getPrinter();
|
||||
if( pPrinter )
|
||||
mpWindow->printPage( nRenderer, pPrinter );
|
||||
{
|
||||
sal_Int64 nContent = getIntValue( "PrintContent", -1 );
|
||||
if( nContent == 1 )
|
||||
{
|
||||
rtl::OUString aPageRange( getStringValue( "PageRange" ) );
|
||||
MultiSelection aSel( aPageRange );
|
||||
long nSelect = aSel.FirstSelected();
|
||||
while( nSelect != long(SFX_ENDOFSELECTION) && nRenderer-- )
|
||||
nSelect = aSel.NextSelected();
|
||||
if( nSelect != long(SFX_ENDOFSELECTION) )
|
||||
mpWindow->printPage( sal_Int32(nSelect-1), pPrinter );
|
||||
}
|
||||
else
|
||||
mpWindow->printPage( nRenderer, pPrinter );
|
||||
}
|
||||
else
|
||||
throw lang::IllegalArgumentException();
|
||||
}
|
||||
|
|
|
@ -33,25 +33,22 @@
|
|||
#include "com/sun/star/view/XRenderable.hpp"
|
||||
#include "cppuhelper/compbase1.hxx"
|
||||
|
||||
#include "vcl/print.hxx"
|
||||
|
||||
class IDEBaseWindow;
|
||||
class Printer;
|
||||
|
||||
namespace basicide
|
||||
{
|
||||
class BasicRenderable :
|
||||
public cppu::WeakComponentImplHelper1< com::sun::star::view::XRenderable >
|
||||
public cppu::WeakComponentImplHelper1< com::sun::star::view::XRenderable >,
|
||||
public vcl::PrinterOptionsHelper
|
||||
{
|
||||
IDEBaseWindow* mpWindow;
|
||||
osl::Mutex maMutex;
|
||||
|
||||
Printer* getPrinter( const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue >& xOptions );
|
||||
Printer* getPrinter();
|
||||
public:
|
||||
BasicRenderable( IDEBaseWindow* pWin )
|
||||
: cppu::WeakComponentImplHelper1< com::sun::star::view::XRenderable >( maMutex )
|
||||
, mpWindow( pWin )
|
||||
{
|
||||
}
|
||||
|
||||
BasicRenderable( IDEBaseWindow* pWin );
|
||||
virtual ~BasicRenderable();
|
||||
|
||||
// XRenderable
|
||||
|
|
|
@ -85,7 +85,7 @@ SLOFILES = $(EXCEPTIONSFILES) \
|
|||
$(SLO)$/objdlg.obj \
|
||||
|
||||
SRS1NAME=$(TARGET)
|
||||
SRC1FILES= basidesh.src macrodlg.src moptions.src moduldlg.src objdlg.src brkdlg.src tbxctl.src
|
||||
SRC1FILES= basidesh.src macrodlg.src moptions.src moduldlg.src objdlg.src brkdlg.src tbxctl.src basicprint.src
|
||||
|
||||
.INCLUDE : target.mk
|
||||
|
||||
|
|
Loading…
Reference in a new issue