summaryrefslogtreecommitdiff
path: root/basctl/source/dlged/dlged.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'basctl/source/dlged/dlged.cxx')
-rw-r--r--basctl/source/dlged/dlged.cxx1361
1 files changed, 0 insertions, 1361 deletions
diff --git a/basctl/source/dlged/dlged.cxx b/basctl/source/dlged/dlged.cxx
deleted file mode 100644
index 8b4e95a2c..000000000
--- a/basctl/source/dlged/dlged.cxx
+++ /dev/null
@@ -1,1361 +0,0 @@
-/* -*- 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.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_basctl.hxx"
-#include "dlged.hxx"
-#include "dlgedfunc.hxx"
-#include "dlgedfac.hxx"
-#include <dlgedmod.hxx>
-#include "dlgedpage.hxx"
-#include "dlgedview.hxx"
-#include "dlgedobj.hxx"
-#include "dlgedclip.hxx"
-#include <dlgeddef.hxx>
-#include "propbrw.hxx"
-#include <localizationmgr.hxx>
-
-#include <basidesh.hxx>
-#include <iderdll.hxx>
-#include <vcl/scrbar.hxx>
-#include <tools/shl.hxx>
-#include <svl/itempool.hxx>
-#include <sfx2/viewfrm.hxx>
-
-#include <svx/svxids.hrc>
-#include <svx/svdpagv.hxx>
-#include <xmlscript/xml_helper.hxx>
-#include <xmlscript/xmldlg_imexp.hxx>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/beans/Property.hpp>
-#include <com/sun/star/awt/XDialog.hpp>
-#include <com/sun/star/util/XCloneable.hpp>
-#include <com/sun/star/resource/XStringResourcePersistence.hpp>
-#include <comphelper/processfactory.hxx>
-#include <comphelper/types.hxx>
-#include <vcl/svapp.hxx>
-#include <toolkit/helper/vclunohelper.hxx>
-
-// #i74769#
-#include <svx/sdrpaintwindow.hxx>
-
-using namespace comphelper;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::io;
-using ::rtl::OUString;
-
-static ::rtl::OUString aResourceResolverPropName( RTL_CONSTASCII_USTRINGPARAM( "ResourceResolver" ));
-static ::rtl::OUString aDecorationPropName( RTL_CONSTASCII_USTRINGPARAM( "Decoration" ));
-static ::rtl::OUString aTitlePropName( RTL_CONSTASCII_USTRINGPARAM( "Title" ));
-
-
-//============================================================================
-// DlgEdHint
-//============================================================================
-
-TYPEINIT1( DlgEdHint, SfxHint );
-
-DlgEdHint::DlgEdHint( DlgEdHintKind eHint )
- :eHintKind( eHint )
-{
-}
-
-
-DlgEdHint::DlgEdHint( DlgEdHintKind eHint, DlgEdObj* pObj )
- :eHintKind( eHint )
- ,pDlgEdObj( pObj )
-{
-}
-
-
-DlgEdHint::~DlgEdHint()
-{
-}
-
-
-//============================================================================
-// DlgEditor
-//============================================================================
-
-void DlgEditor::ShowDialog()
-{
- uno::Reference< lang::XMultiServiceFactory > xMSF = getProcessServiceFactory();
-
- // create a dialog
- uno::Reference< awt::XControl > xDlg( xMSF->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialog" ) ) ), uno::UNO_QUERY );
-
- // clone the dialog model
- uno::Reference< util::XCloneable > xC( m_xUnoControlDialogModel, uno::UNO_QUERY );
- uno::Reference< util::XCloneable > xNew = xC->createClone();
- uno::Reference< awt::XControlModel > xDlgMod( xNew, uno::UNO_QUERY );
-
- uno::Reference< beans::XPropertySet > xSrcDlgModPropSet( m_xUnoControlDialogModel, uno::UNO_QUERY );
- uno::Reference< beans::XPropertySet > xNewDlgModPropSet( xDlgMod, uno::UNO_QUERY );
- if( xNewDlgModPropSet.is() )
- {
- if( xSrcDlgModPropSet.is() )
- {
- try
- {
- Any aResourceResolver = xSrcDlgModPropSet->getPropertyValue( aResourceResolverPropName );
- xNewDlgModPropSet->setPropertyValue( aResourceResolverPropName, aResourceResolver );
- }
- catch( UnknownPropertyException& )
- {
- OSL_FAIL( "DlgEditor::ShowDialog(): No ResourceResolver property" );
- }
- }
-
- // Disable decoration
- bool bDecoration = true;
- try
- {
- Any aDecorationAny = xSrcDlgModPropSet->getPropertyValue( aDecorationPropName );
- aDecorationAny >>= bDecoration;
- if( !bDecoration )
- {
- xNewDlgModPropSet->setPropertyValue( aDecorationPropName, makeAny( true ) );
- xNewDlgModPropSet->setPropertyValue( aTitlePropName, makeAny( ::rtl::OUString() ) );
- }
- }
- catch( UnknownPropertyException& )
- {}
- }
-
- // set the model
- xDlg->setModel( xDlgMod );
-
- // create a peer
- uno::Reference< awt::XToolkit> xToolkit( xMSF->createInstance( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.ExtToolkit" ) ) ), uno::UNO_QUERY );
- xDlg->createPeer( xToolkit, pWindow->GetComponentInterface() );
-
- uno::Reference< awt::XDialog > xD( xDlg, uno::UNO_QUERY );
- xD->execute();
-
- uno::Reference< lang::XComponent > xComponent(xDlg, uno::UNO_QUERY);
- if (xComponent.is())
- xComponent->dispose();
-}
-
-
-sal_Bool DlgEditor::UnmarkDialog()
-{
- SdrObject* pDlgObj = pDlgEdModel->GetPage(0)->GetObj(0);
- SdrPageView* pPgView = pDlgEdView->GetSdrPageView();
-
- sal_Bool bWasMarked = pDlgEdView->IsObjMarked( pDlgObj );
-
- if( bWasMarked )
- pDlgEdView->MarkObj( pDlgObj, pPgView, sal_True );
-
- return bWasMarked;
-}
-
-
-sal_Bool DlgEditor::RemarkDialog()
-{
- SdrObject* pDlgObj = pDlgEdModel->GetPage(0)->GetObj(0);
- SdrPageView* pPgView = pDlgEdView->GetSdrPageView();
-
- sal_Bool bWasMarked = pDlgEdView->IsObjMarked( pDlgObj );
-
- if( !bWasMarked )
- pDlgEdView->MarkObj( pDlgObj, pPgView, sal_False );
-
- return bWasMarked;
-}
-
-
-DlgEditor::DlgEditor( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel )
- :pHScroll(NULL)
- ,pVScroll(NULL)
- ,pDlgEdModel(NULL)
- ,pDlgEdPage(NULL)
- ,pDlgEdView(NULL)
- ,pDlgEdForm(NULL)
- ,m_xUnoControlDialogModel(NULL)
- ,m_ClipboardDataFlavors(1)
- ,m_ClipboardDataFlavorsResource(2)
- ,pObjFac(NULL)
- ,pWindow(NULL)
- ,pFunc(NULL)
- ,eMode( DLGED_SELECT )
- ,eActObj( OBJ_DLG_PUSHBUTTON )
- ,bFirstDraw(sal_False)
- ,aGridSize( 100, 100 ) // 100TH_MM
- ,bGridVisible(sal_False)
- ,bGridSnap(sal_True)
- ,bCreateOK(sal_True)
- ,bDialogModelChanged(sal_False)
- ,mnPaintGuard(0)
- ,m_xDocument( xModel )
-{
- pDlgEdModel = new DlgEdModel();
- pDlgEdModel->GetItemPool().FreezeIdRanges();
- pDlgEdModel->SetScaleUnit( MAP_100TH_MM );
-
- SdrLayerAdmin& rAdmin = pDlgEdModel->GetLayerAdmin();
- rAdmin.NewLayer( rAdmin.GetControlLayerName() );
- rAdmin.NewLayer( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "HiddenLayer" ) ) );
-
- pDlgEdPage = new DlgEdPage( *pDlgEdModel );
- pDlgEdModel->InsertPage( pDlgEdPage );
-
- pObjFac = new DlgEdFactory();
-
- pFunc = new DlgEdFuncSelect( this );
-
- // set clipboard data flavors
- m_ClipboardDataFlavors[0].MimeType = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "application/vnd.sun.xml.dialog" ));
- m_ClipboardDataFlavors[0].HumanPresentableName = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Dialog 6.0" ));
- m_ClipboardDataFlavors[0].DataType = ::getCppuType( (const Sequence< sal_Int8 >*) 0 );
-
- m_ClipboardDataFlavorsResource[0] = m_ClipboardDataFlavors[0];
- m_ClipboardDataFlavorsResource[1].MimeType = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "application/vnd.sun.xml.dialogwithresource" ));
- m_ClipboardDataFlavorsResource[1].HumanPresentableName = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Dialog 8.0" ));
- m_ClipboardDataFlavorsResource[1].DataType = ::getCppuType( (const Sequence< sal_Int8 >*) 0 );
-
- aPaintTimer.SetTimeout( 1 );
- aPaintTimer.SetTimeoutHdl( LINK( this, DlgEditor, PaintTimeout ) );
-
- aMarkTimer.SetTimeout( 100 );
- aMarkTimer.SetTimeoutHdl( LINK( this, DlgEditor, MarkTimeout ) );
-}
-
-
-DlgEditor::~DlgEditor()
-{
- aPaintTimer.Stop();
- aMarkTimer.Stop();
-
- ::comphelper::disposeComponent( m_xControlContainer );
-
- delete pObjFac;
- delete pFunc;
- delete pDlgEdView;
- delete pDlgEdModel;
-}
-
-
-Reference< awt::XControlContainer > DlgEditor::GetWindowControlContainer()
-{
- if ( !m_xControlContainer.is() && pWindow )
- m_xControlContainer = VCLUnoHelper::CreateControlContainer( pWindow );
- return m_xControlContainer;
-}
-
-
-void DlgEditor::SetWindow( Window* pWindow_ )
-{
- DlgEditor::pWindow = pWindow_;
- pWindow_->SetMapMode( MapMode( MAP_100TH_MM ) );
- pDlgEdPage->SetSize( pWindow_->PixelToLogic( Size( DLGED_PAGE_WIDTH_MIN, DLGED_PAGE_HEIGHT_MIN ) ) );
-
- pDlgEdView = new DlgEdView( pDlgEdModel, pWindow_, this );
- pDlgEdView->ShowSdrPage(pDlgEdView->GetModel()->GetPage(0));
- pDlgEdView->SetLayerVisible( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "HiddenLayer" ) ), sal_False );
- pDlgEdView->SetMoveSnapOnlyTopLeft( sal_True );
- pDlgEdView->SetWorkArea( Rectangle( Point( 0, 0 ), pDlgEdPage->GetSize() ) );
-
- pDlgEdView->SetGridCoarse( aGridSize );
- pDlgEdView->SetSnapGridWidth(Fraction(aGridSize.Width(), 1), Fraction(aGridSize.Height(), 1));
- pDlgEdView->SetGridSnap( bGridSnap );
- pDlgEdView->SetGridVisible( bGridVisible );
- pDlgEdView->SetDragStripes( sal_False );
-
- pDlgEdView->SetDesignMode( sal_True );
-
- ::comphelper::disposeComponent( m_xControlContainer );
-}
-
-
-void DlgEditor::SetScrollBars( ScrollBar* pHS, ScrollBar* pVS )
-{
- pHScroll = pHS;
- pVScroll = pVS;
-
- InitScrollBars();
-}
-
-
-void DlgEditor::InitScrollBars()
-{
- DBG_ASSERT( pHScroll, "DlgEditor::InitScrollBars: no horizontal scroll bar!" );
- DBG_ASSERT( pVScroll, "DlgEditor::InitScrollBars: no vertical scroll bar!" );
- if ( !pHScroll || !pVScroll )
- return;
-
- Size aOutSize = pWindow->GetOutputSize();
- Size aPgSize = pDlgEdPage->GetSize();
-
- pHScroll->SetRange( Range( 0, aPgSize.Width() ));
- pVScroll->SetRange( Range( 0, aPgSize.Height() ));
- pHScroll->SetVisibleSize( (sal_uLong)aOutSize.Width() );
- pVScroll->SetVisibleSize( (sal_uLong)aOutSize.Height() );
-
- pHScroll->SetLineSize( aOutSize.Width() / 10 );
- pVScroll->SetLineSize( aOutSize.Height() / 10 );
- pHScroll->SetPageSize( aOutSize.Width() / 2 );
- pVScroll->SetPageSize( aOutSize.Height() / 2 );
-
- DoScroll( pHScroll );
- DoScroll( pVScroll );
-}
-
-
-void DlgEditor::DoScroll( ScrollBar* )
-{
- if( !pHScroll || !pVScroll )
- return;
-
- MapMode aMap = pWindow->GetMapMode();
- Point aOrg = aMap.GetOrigin();
-
- Size aScrollPos( pHScroll->GetThumbPos(), pVScroll->GetThumbPos() );
- aScrollPos = pWindow->LogicToPixel( aScrollPos );
- aScrollPos = pWindow->PixelToLogic( aScrollPos );
-
- long nX = aScrollPos.Width() + aOrg.X();
- long nY = aScrollPos.Height() + aOrg.Y();
-
- if( !nX && !nY )
- return;
-
- pWindow->Update();
-
- // #i31562#
- // When scrolling, someone was rescuing the Wallpaper and forced the window scroll to
- // be done without background refresh. I do not know why, but that causes the repaint
- // problems. Taking that out.
- // Wallpaper aOldBackground = pWindow->GetBackground();
- // pWindow->SetBackground();
-
- // #i74769# children should be scrolled
- pWindow->Scroll( -nX, -nY, SCROLL_CHILDREN);
- aMap.SetOrigin( Point( -aScrollPos.Width(), -aScrollPos.Height() ) );
- pWindow->SetMapMode( aMap );
- pWindow->Update();
-
- DlgEdHint aHint( DLGED_HINT_WINDOWSCROLLED );
- Broadcast( aHint );
-}
-
-
-void DlgEditor::UpdateScrollBars()
-{
- MapMode aMap = pWindow->GetMapMode();
- Point aOrg = aMap.GetOrigin();
-
- if ( pHScroll )
- pHScroll->SetThumbPos( -aOrg.X() );
-
- if ( pVScroll )
- pVScroll->SetThumbPos( -aOrg.Y() );
-}
-
-
-void DlgEditor::SetDialog( uno::Reference< container::XNameContainer > xUnoControlDialogModel )
-{
- // set dialog model
- m_xUnoControlDialogModel = xUnoControlDialogModel;
-
- // create dialog form
- pDlgEdForm = new DlgEdForm();
- uno::Reference< awt::XControlModel > xDlgMod( m_xUnoControlDialogModel , uno::UNO_QUERY );
- pDlgEdForm->SetUnoControlModel(xDlgMod);
- pDlgEdForm->SetDlgEditor( this );
- ((DlgEdPage*)pDlgEdModel->GetPage(0))->SetDlgEdForm( pDlgEdForm );
- pDlgEdModel->GetPage(0)->InsertObject( pDlgEdForm );
- AdjustPageSize();
- pDlgEdForm->SetRectFromProps();
- pDlgEdForm->UpdateTabIndices(); // for backward compatibility
- pDlgEdForm->StartListening();
-
- // create controls
- Reference< ::com::sun::star::container::XNameAccess > xNameAcc( m_xUnoControlDialogModel, UNO_QUERY );
- if ( xNameAcc.is() )
- {
- // get sequence of control names
- Sequence< ::rtl::OUString > aNames = xNameAcc->getElementNames();
- const ::rtl::OUString* pNames = aNames.getConstArray();
- sal_Int32 nCtrls = aNames.getLength();
-
- // create a map of tab indices and control names, sorted by tab index
- IndexToNameMap aIndexToNameMap;
- for ( sal_Int32 i = 0; i < nCtrls; ++i )
- {
- // get name
- ::rtl::OUString aName( pNames[i] );
-
- // get tab index
- sal_Int16 nTabIndex = -1;
- Any aCtrl = xNameAcc->getByName( aName );
- Reference< ::com::sun::star::beans::XPropertySet > xPSet;
- aCtrl >>= xPSet;
- if ( xPSet.is() )
- xPSet->getPropertyValue( DLGED_PROP_TABINDEX ) >>= nTabIndex;
-
- // insert into map
- aIndexToNameMap.insert( IndexToNameMap::value_type( nTabIndex, aName ) );
- }
-
- // create controls and insert them into drawing page
- for ( IndexToNameMap::iterator aIt = aIndexToNameMap.begin(); aIt != aIndexToNameMap.end(); ++aIt )
- {
- Any aCtrl = xNameAcc->getByName( aIt->second );
- Reference< ::com::sun::star::awt::XControlModel > xCtrlModel;
- aCtrl >>= xCtrlModel;
- DlgEdObj* pCtrlObj = new DlgEdObj();
- pCtrlObj->SetUnoControlModel( xCtrlModel );
- pCtrlObj->SetDlgEdForm( pDlgEdForm );
- pDlgEdForm->AddChild( pCtrlObj );
- pDlgEdModel->GetPage(0)->InsertObject( pCtrlObj );
- pCtrlObj->SetRectFromProps();
- pCtrlObj->UpdateStep();
- pCtrlObj->StartListening();
- }
- }
-
- bFirstDraw = sal_True;
-
- pDlgEdModel->SetChanged( sal_False );
-}
-
-void DlgEditor::ResetDialog( void )
-{
- DlgEdForm* pOldDlgEdForm = pDlgEdForm;
- DlgEdPage* pPage = (DlgEdPage*)pDlgEdModel->GetPage(0);
- SdrPageView* pPgView = pDlgEdView->GetSdrPageView();
- sal_Bool bWasMarked = pDlgEdView->IsObjMarked( pOldDlgEdForm );
- pDlgEdView->UnmarkAll();
- pPage->Clear();
- pPage->SetDlgEdForm( NULL );
- SetDialog( m_xUnoControlDialogModel );
- if( bWasMarked )
- pDlgEdView->MarkObj( pDlgEdForm, pPgView, sal_False );
-}
-
-
-Reference< util::XNumberFormatsSupplier > const & DlgEditor::GetNumberFormatsSupplier()
-{
- if ( !m_xSupplier.is() )
- {
- Reference< lang::XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
- Reference< util::XNumberFormatsSupplier > xSupplier( xMSF->createInstance(
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.util.NumberFormatsSupplier") ) ), UNO_QUERY );
-
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- if ( !m_xSupplier.is() )
- {
- m_xSupplier = xSupplier;
- }
- }
- return m_xSupplier;
-}
-
-
-void DlgEditor::MouseButtonDown( const MouseEvent& rMEvt )
-{
- if( pWindow )
- pWindow->GrabFocus();
- pFunc->MouseButtonDown( rMEvt );
-}
-
-
-void DlgEditor::MouseButtonUp( const MouseEvent& rMEvt )
-{
- sal_Bool bRet = pFunc->MouseButtonUp( rMEvt );
-
- if( (eMode == DLGED_INSERT) )
- bCreateOK = bRet;
-}
-
-
-void DlgEditor::MouseMove( const MouseEvent& rMEvt )
-{
- pFunc->MouseMove( rMEvt );
-}
-
-
-sal_Bool DlgEditor::KeyInput( const KeyEvent& rKEvt )
-{
- return pFunc->KeyInput( rKEvt );
-}
-
-
-void DlgEditor::Paint( const Rectangle& rRect )
-{
- aPaintRect = rRect;
- PaintTimeout( &aPaintTimer );
-}
-
-
-IMPL_LINK( DlgEditor, PaintTimeout, Timer *, EMPTYARG )
-{
- if( !pDlgEdView )
- return 0;
-
- mnPaintGuard++;
-
- Size aMacSize;
- if( bFirstDraw &&
- pWindow->IsVisible() &&
- (pWindow->GetOutputSize() != aMacSize) )
- {
- bFirstDraw = sal_False;
-
- // get property set
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xPSet(pDlgEdForm->GetUnoControlModel(), ::com::sun::star::uno::UNO_QUERY);
-
- if ( xPSet.is() )
- {
- // get dialog size from properties
- sal_Int32 nWidth = 0, nHeight = 0;
- xPSet->getPropertyValue( DLGED_PROP_WIDTH ) >>= nWidth;
- xPSet->getPropertyValue( DLGED_PROP_HEIGHT ) >>= nHeight;
-
- if ( nWidth == 0 && nHeight == 0 )
- {
- Size aSize = pWindow->PixelToLogic( Size( 400, 300 ) );
-
- // align with grid
- Size aGridSize_(long(pDlgEdView->GetSnapGridWidthX()), long(pDlgEdView->GetSnapGridWidthY()));
- aSize.Width() -= aSize.Width() % aGridSize_.Width();
- aSize.Height() -= aSize.Height() % aGridSize_.Height();
-
- Point aPos;
- Size aOutSize = pWindow->GetOutputSize();
- aPos.X() = (aOutSize.Width()>>1) - (aSize.Width()>>1);
- aPos.Y() = (aOutSize.Height()>>1) - (aSize.Height()>>1);
-
- // align with grid
- aPos.X() -= aPos.X() % aGridSize_.Width();
- aPos.Y() -= aPos.Y() % aGridSize_.Height();
-
- // don't put in the corner
- Point aMinPos = pWindow->PixelToLogic( Point( 30, 20 ) );
- if( (aPos.X() < aMinPos.X()) || (aPos.Y() < aMinPos.Y()) )
- {
- aPos = aMinPos;
- aPos.X() -= aPos.X() % aGridSize_.Width();
- aPos.Y() -= aPos.Y() % aGridSize_.Height();
- }
-
- // set dialog position and size
- pDlgEdForm->SetSnapRect( Rectangle( aPos, aSize ) );
- pDlgEdForm->EndListening(sal_False);
- pDlgEdForm->SetPropsFromRect();
- pDlgEdForm->GetDlgEditor()->SetDialogModelChanged(sal_True);
- pDlgEdForm->StartListening();
-
- // set position and size of controls
- sal_uLong nObjCount;
- if ( pDlgEdPage && ( ( nObjCount = pDlgEdPage->GetObjCount() ) > 0 ) )
- {
- for ( sal_uLong i = 0 ; i < nObjCount ; i++ )
- {
- SdrObject* pObj = pDlgEdPage->GetObj(i);
- DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pObj);
- if ( pDlgEdObj && !pDlgEdObj->ISA(DlgEdForm) )
- pDlgEdObj->SetRectFromProps();
- }
- }
- }
- }
- }
-
- // repaint, get PageView and prepare Region
- SdrPageView* pPgView = pDlgEdView->GetSdrPageView();
- const Region aPaintRectRegion(aPaintRect);
-
-
- // #i74769#
- SdrPaintWindow* pTargetPaintWindow = 0;
-
- // mark repaint start
- if(pPgView)
- {
- pTargetPaintWindow = pPgView->GetView().BeginDrawLayers(pWindow, aPaintRectRegion);
- OSL_ENSURE(pTargetPaintWindow, "BeginDrawLayers: Got no SdrPaintWindow (!)");
- }
-
- // draw background self using wallpaper
- // #i79128# ...and use correct OutDev for that
- if(pTargetPaintWindow)
- {
- OutputDevice& rTargetOutDev = pTargetPaintWindow->GetTargetOutputDevice();
- rTargetOutDev.DrawWallpaper(aPaintRect, Wallpaper(Color(COL_WHITE)));
- }
-
- // do paint (unbuffered) and mark repaint end
- if(pPgView)
- {
- // paint of control layer is done in EndDrawLayers anyway...
- pPgView->GetView().EndDrawLayers(*pTargetPaintWindow, true);
- }
-
- mnPaintGuard--;
-
- DBG_ASSERT(pWindow,"Window not set");
- return 0;
-}
-
-
-IMPL_LINK( DlgEditor, MarkTimeout, Timer *, EMPTYARG )
-{
- BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
-
- SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
- SfxChildWindow* pChildWin = pViewFrame ? pViewFrame->GetChildWindow( SID_SHOW_PROPERTYBROWSER ) : NULL;
- if ( !pChildWin )
- return 0L;
-
- ((PropBrw*)(pChildWin->GetWindow()))->Update( pIDEShell );
-
- return 1;
-}
-
-
-void DlgEditor::SetMode( DlgEdMode eNewMode )
-{
- if ( eNewMode != eMode )
- {
- delete pFunc;
-
- if ( eNewMode == DLGED_INSERT )
- pFunc = new DlgEdFuncInsert( this );
- else
- pFunc = new DlgEdFuncSelect( this );
-
- if ( eNewMode == DLGED_READONLY )
- pDlgEdModel->SetReadOnly( sal_True );
- else
- pDlgEdModel->SetReadOnly( sal_False );
- }
-
- if ( eNewMode == DLGED_TEST )
- ShowDialog();
-
- eMode = eNewMode;
-}
-
-
-void DlgEditor::SetInsertObj( sal_uInt16 eObj )
-{
- eActObj = eObj;
-
- if( pDlgEdView )
- pDlgEdView->SetCurrentObj( eActObj, DlgInventor );
-}
-
-
-sal_uInt16 DlgEditor::GetInsertObj() const
-{
- return eActObj;
-}
-
-
-void DlgEditor::CreateDefaultObject()
-{
- // create object by factory
- SdrObject* pObj = SdrObjFactory::MakeNewObject( pDlgEdView->GetCurrentObjInventor(), pDlgEdView->GetCurrentObjIdentifier(), pDlgEdPage );
-
- DlgEdObj* pDlgEdObj = PTR_CAST( DlgEdObj, pObj );
- if ( pDlgEdObj )
- {
- // set position and size
- Size aSize = pWindow->PixelToLogic( Size( 96, 24 ) );
- Point aPoint = (pDlgEdForm->GetSnapRect()).Center();
- aPoint.X() -= aSize.Width() / 2;
- aPoint.Y() -= aSize.Height() / 2;
- pDlgEdObj->SetSnapRect( Rectangle( aPoint, aSize ) );
-
- // set default property values
- pDlgEdObj->SetDefaults();
-
- // insert object into drawing page
- SdrPageView* pPageView = pDlgEdView->GetSdrPageView();
- pDlgEdView->InsertObjectAtView( pDlgEdObj, *pPageView);
-
- // start listening
- pDlgEdObj->StartListening();
- }
-}
-
-
-void DlgEditor::Cut()
-{
- Copy();
- Delete();
-}
-
-
-void implCopyStreamToByteSequence( Reference< XInputStream > xStream,
- Sequence< sal_Int8 >& bytes )
-{
- sal_Int32 nRead = xStream->readBytes( bytes, xStream->available() );
- for (;;)
- {
- Sequence< sal_Int8 > readBytes;
- nRead = xStream->readBytes( readBytes, 1024 );
- if (! nRead)
- break;
-
- sal_Int32 nPos = bytes.getLength();
- bytes.realloc( nPos + nRead );
- ::rtl_copyMemory( bytes.getArray() + nPos, readBytes.getConstArray(), (sal_uInt32)nRead );
- }
-}
-
-void DlgEditor::Copy()
-{
- if( !pDlgEdView->AreObjectsMarked() )
- return;
-
- // stop all drawing actions
- pDlgEdView->BrkAction();
-
- // create an empty clipboard dialog model
- Reference< util::XCloneable > xClone( m_xUnoControlDialogModel, UNO_QUERY );
- Reference< util::XCloneable > xNewClone = xClone->createClone();
- Reference< container::XNameContainer > xClipDialogModel( xNewClone, UNO_QUERY );
-
- Reference< container::XNameAccess > xNAcc( xClipDialogModel, UNO_QUERY );
- if ( xNAcc.is() )
- {
- Sequence< OUString > aNames = xNAcc->getElementNames();
- const OUString* pNames = aNames.getConstArray();
- sal_uInt32 nCtrls = aNames.getLength();
-
- for ( sal_uInt32 n = 0; n < nCtrls; n++ )
- {
- xClipDialogModel->removeByName( pNames[n] );
- }
- }
-
- // insert control models of marked objects into clipboard dialog model
- sal_uLong nMark = pDlgEdView->GetMarkedObjectList().GetMarkCount();
- for( sal_uLong i = 0; i < nMark; i++ )
- {
- SdrObject* pObj = pDlgEdView->GetMarkedObjectList().GetMark(i)->GetMarkedSdrObj();
- DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pObj);
-
- if (pDlgEdObj && !pDlgEdObj->ISA(DlgEdForm) )
- {
- ::rtl::OUString aName;
- Reference< beans::XPropertySet > xMarkPSet(pDlgEdObj->GetUnoControlModel(), uno::UNO_QUERY);
- if (xMarkPSet.is())
- {
- xMarkPSet->getPropertyValue( DLGED_PROP_NAME ) >>= aName;
- }
-
- Reference< container::XNameAccess > xNameAcc(m_xUnoControlDialogModel, UNO_QUERY );
- if ( xNameAcc.is() && xNameAcc->hasByName(aName) )
- {
- Any aCtrl = xNameAcc->getByName( aName );
-
- // clone control model
- Reference< util::XCloneable > xCtrl;
- aCtrl >>= xCtrl;
- Reference< util::XCloneable > xNewCtrl = xCtrl->createClone();
- Any aNewCtrl;
- aNewCtrl <<= xNewCtrl;
-
- if (xClipDialogModel.is())
- xClipDialogModel->insertByName( aName , aNewCtrl );
- }
- }
- }
-
- // export clipboard dialog model to xml
- Reference< XComponentContext > xContext;
- Reference< beans::XPropertySet > xProps( ::comphelper::getProcessServiceFactory(), UNO_QUERY );
- OSL_ASSERT( xProps.is() );
- OSL_VERIFY( xProps->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
- Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xClipDialogModel, xContext, m_xDocument );
- Reference< XInputStream > xStream( xISP->createInputStream() );
- Sequence< sal_Int8 > DialogModelBytes;
- implCopyStreamToByteSequence( xStream, DialogModelBytes );
- xStream->closeInput();
-
- // set clipboard content
- Reference< datatransfer::clipboard::XClipboard > xClipboard = GetWindow()->GetClipboard();
- if ( xClipboard.is() )
- {
- // With resource?
- uno::Reference< beans::XPropertySet > xDialogModelPropSet( m_xUnoControlDialogModel, uno::UNO_QUERY );
- uno::Reference< resource::XStringResourcePersistence > xStringResourcePersistence;
- if( xDialogModelPropSet.is() )
- {
- try
- {
- Any aResourceResolver = xDialogModelPropSet->getPropertyValue( aResourceResolverPropName );
- aResourceResolver >>= xStringResourcePersistence;
- }
- catch( UnknownPropertyException& )
- {}
- }
-
- DlgEdTransferableImpl* pTrans = NULL;
- if( xStringResourcePersistence.is() )
- {
- // With resource, support old and new format
-
- // Export xClipDialogModel another time with ids replaced by current language string
- uno::Reference< resource::XStringResourceManager >
- xStringResourceManager( xStringResourcePersistence, uno::UNO_QUERY );
- LocalizationMgr::resetResourceForDialog( xClipDialogModel, xStringResourceManager );
- Reference< XInputStreamProvider > xISP2 = ::xmlscript::exportDialogModel( xClipDialogModel, xContext, m_xDocument );
- Reference< XInputStream > xStream2( xISP2->createInputStream() );
- Sequence< sal_Int8 > NoResourceDialogModelBytes;
- implCopyStreamToByteSequence( xStream2, NoResourceDialogModelBytes );
- xStream2->closeInput();
-
- // Old format contains dialog with replaced ids
- Sequence< Any > aSeqData(2);
- Any aNoResourceDialogModelBytesAny;
- aNoResourceDialogModelBytesAny <<= NoResourceDialogModelBytes;
- aSeqData[0] = aNoResourceDialogModelBytesAny;
-
- // New format contains dialog and resource
- Sequence< sal_Int8 > aResData = xStringResourcePersistence->exportBinary();
-
- // Create sequence for combined dialog and resource
- sal_Int32 nDialogDataLen = DialogModelBytes.getLength();
- sal_Int32 nResDataLen = aResData.getLength();
-
- // Combined data = 4 Bytes 32Bit Offset to begin of resource data, lowest byte first
- // + nDialogDataLen bytes dialog data + nResDataLen resource data
- sal_Int32 nTotalLen = 4 + nDialogDataLen + nResDataLen;
- sal_Int32 nResOffset = 4 + nDialogDataLen;
- Sequence< sal_Int8 > aCombinedData( nTotalLen );
- sal_Int8* pCombinedData = aCombinedData.getArray();
-
- // Write offset
- sal_Int32 n = nResOffset;
- for( sal_Int16 i = 0 ; i < 4 ; i++ )
- {
- pCombinedData[i] = sal_Int8( n & 0xff );
- n >>= 8;
- }
- ::rtl_copyMemory( pCombinedData + 4, DialogModelBytes.getConstArray(), nDialogDataLen );
- ::rtl_copyMemory( pCombinedData + nResOffset, aResData.getConstArray(), nResDataLen );
-
- Any aCombinedDataAny;
- aCombinedDataAny <<= aCombinedData;
- aSeqData[1] = aCombinedDataAny;
-
- pTrans = new DlgEdTransferableImpl( m_ClipboardDataFlavorsResource, aSeqData );
- }
- else
- {
- // No resource, support only old format
- Sequence< Any > aSeqData(1);
- Any aDialogModelBytesAny;
- aDialogModelBytesAny <<= DialogModelBytes;
- aSeqData[0] = aDialogModelBytesAny;
- pTrans = new DlgEdTransferableImpl( m_ClipboardDataFlavors , aSeqData );
- }
- const sal_uInt32 nRef = Application::ReleaseSolarMutex();
- xClipboard->setContents( pTrans , pTrans );
- Application::AcquireSolarMutex( nRef );
- }
-}
-
-
-void DlgEditor::Paste()
-{
- // stop all drawing actions
- pDlgEdView->BrkAction();
-
- // unmark all objects
- pDlgEdView->UnmarkAll();
-
- // get clipboard
- Reference< datatransfer::clipboard::XClipboard > xClipboard = GetWindow()->GetClipboard();
- if ( xClipboard.is() )
- {
- // get clipboard content
- const sal_uInt32 nRef = Application::ReleaseSolarMutex();
- Reference< datatransfer::XTransferable > xTransf = xClipboard->getContents();
- Application::AcquireSolarMutex( nRef );
- if ( xTransf.is() )
- {
- // Is target dialog (library) localized?
- uno::Reference< beans::XPropertySet > xDialogModelPropSet( m_xUnoControlDialogModel, uno::UNO_QUERY );
- uno::Reference< resource::XStringResourceManager > xStringResourceManager;
- if( xDialogModelPropSet.is() )
- {
- try
- {
- Any aResourceResolver = xDialogModelPropSet->getPropertyValue( aResourceResolverPropName );
- aResourceResolver >>= xStringResourceManager;
- }
- catch( UnknownPropertyException& )
- {}
- }
- bool bLocalized = false;
- if( xStringResourceManager.is() )
- bLocalized = ( xStringResourceManager->getLocales().getLength() > 0 );
-
- if ( xTransf->isDataFlavorSupported( m_ClipboardDataFlavors[0] ) )
- {
- // create clipboard dialog model from xml
- Reference< lang::XMultiServiceFactory > xMSF = getProcessServiceFactory();
- Reference< container::XNameContainer > xClipDialogModel( xMSF->createInstance
- ( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.awt.UnoControlDialogModel" ) ) ),
- uno::UNO_QUERY );
-
- bool bSourceIsLocalized = false;
- Sequence< sal_Int8 > DialogModelBytes;
- Sequence< sal_Int8 > aResData;
- if( bLocalized && xTransf->isDataFlavorSupported( m_ClipboardDataFlavorsResource[1] ) )
- {
- bSourceIsLocalized = true;
-
- Any aCombinedDataAny = xTransf->getTransferData( m_ClipboardDataFlavorsResource[1] );
- Sequence< sal_Int8 > aCombinedData;
- aCombinedDataAny >>= aCombinedData;
- const sal_Int8* pCombinedData = aCombinedData.getConstArray();
-
- sal_Int32 nTotalLen = aCombinedData.getLength();
-
- // Reading offset
- sal_Int32 nResOffset = 0;
- sal_Int32 nFactor = 1;
- for( sal_Int16 i = 0; i < 4; i++ )
- {
- nResOffset += nFactor * sal_uInt8( pCombinedData[i] );
- nFactor *= 256;
- }
-
- sal_Int32 nResDataLen = nTotalLen - nResOffset;
- sal_Int32 nDialogDataLen = nTotalLen - nResDataLen - 4;
-
- DialogModelBytes.realloc( nDialogDataLen );
- ::rtl_copyMemory( DialogModelBytes.getArray(), pCombinedData + 4, nDialogDataLen );
-
- aResData.realloc( nResDataLen );
- ::rtl_copyMemory( aResData.getArray(), pCombinedData + nResOffset, nResDataLen );
- }
- else
- {
- Any aAny = xTransf->getTransferData( m_ClipboardDataFlavors[0] );
- aAny >>= DialogModelBytes;
- }
-
- if ( xClipDialogModel.is() )
- {
- Reference< XComponentContext > xContext;
- Reference< beans::XPropertySet > xProps( xMSF, UNO_QUERY );
- OSL_ASSERT( xProps.is() );
- OSL_VERIFY( xProps->getPropertyValue( OUString(RTL_CONSTASCII_USTRINGPARAM("DefaultContext")) ) >>= xContext );
- ::xmlscript::importDialogModel( ::xmlscript::createInputStream( rtl::ByteSequence(DialogModelBytes.getArray(), DialogModelBytes.getLength()) ) , xClipDialogModel, xContext, m_xDocument );
- }
-
- // get control models from clipboard dialog model
- Reference< ::com::sun::star::container::XNameAccess > xNameAcc( xClipDialogModel, UNO_QUERY );
- if ( xNameAcc.is() )
- {
- Sequence< OUString > aNames = xNameAcc->getElementNames();
- const OUString* pNames = aNames.getConstArray();
- sal_uInt32 nCtrls = aNames.getLength();
-
- Reference< resource::XStringResourcePersistence > xStringResourcePersistence;
- if( nCtrls > 0 && bSourceIsLocalized )
- {
- Reference< lang::XMultiServiceFactory > xSMgr = getProcessServiceFactory();
- xStringResourcePersistence = Reference< resource::XStringResourcePersistence >( xSMgr->createInstance
- ( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.resource.StringResource" )) ), UNO_QUERY );
- if( xStringResourcePersistence.is() )
- xStringResourcePersistence->importBinary( aResData );
- }
- for( sal_uInt32 n = 0; n < nCtrls; n++ )
- {
- Any aA = xNameAcc->getByName( pNames[n] );
- Reference< ::com::sun::star::awt::XControlModel > xCM;
- aA >>= xCM;
-
- // clone the control model
- Reference< util::XCloneable > xClone( xCM, uno::UNO_QUERY );
- Reference< awt::XControlModel > xCtrlModel( xClone->createClone(), uno::UNO_QUERY );
-
- DlgEdObj* pCtrlObj = new DlgEdObj();
- pCtrlObj->SetDlgEdForm(pDlgEdForm); // set parent form
- pDlgEdForm->AddChild(pCtrlObj); // add child to parent form
- pCtrlObj->SetUnoControlModel( xCtrlModel ); // set control model
-
- // set new name
- ::rtl::OUString aOUniqueName( pCtrlObj->GetUniqueName() );
- Reference< beans::XPropertySet > xPSet( xCtrlModel , UNO_QUERY );
- Any aUniqueName;
- aUniqueName <<= aOUniqueName;
- xPSet->setPropertyValue( DLGED_PROP_NAME, aUniqueName );
-
- // set tabindex
- Reference< container::XNameAccess > xNA( m_xUnoControlDialogModel , UNO_QUERY );
- Sequence< OUString > aNames_ = xNA->getElementNames();
- Any aTabIndex;
- aTabIndex <<= (sal_Int16) aNames_.getLength();
- xPSet->setPropertyValue( DLGED_PROP_TABINDEX, aTabIndex );
-
- if( bLocalized )
- {
- Any aControlAny;
- aControlAny <<= xCtrlModel;
- if( bSourceIsLocalized && xStringResourcePersistence.is() )
- {
- Reference< resource::XStringResourceResolver >
- xSourceStringResolver( xStringResourcePersistence, UNO_QUERY );
- LocalizationMgr::copyResourcesForPastedEditorObject( this,
- aControlAny, aOUniqueName, xSourceStringResolver );
- }
- else
- {
- LocalizationMgr::setControlResourceIDsForNewEditorObject
- ( this, aControlAny, aOUniqueName );
- }
- }
-
- // insert control model in editor dialog model
- Any aCtrlModel;
- aCtrlModel <<= xCtrlModel;
- m_xUnoControlDialogModel->insertByName( aOUniqueName , aCtrlModel );
-
- // insert object into drawing page
- pDlgEdModel->GetPage(0)->InsertObject( pCtrlObj );
- pCtrlObj->SetRectFromProps();
- pCtrlObj->UpdateStep();
- pDlgEdForm->UpdateTabOrderAndGroups();
- pCtrlObj->StartListening(); // start listening
-
- // mark object
- SdrPageView* pPgView = pDlgEdView->GetSdrPageView();
- pDlgEdView->MarkObj( pCtrlObj, pPgView, sal_False, sal_True);
- }
-
- // center marked objects in dialog editor form
- Point aMarkCenter = (pDlgEdView->GetMarkedObjRect()).Center();
- Point aFormCenter = (pDlgEdForm->GetSnapRect()).Center();
- Point aPoint = aFormCenter - aMarkCenter;
- Size aSize( aPoint.X() , aPoint.Y() );
- pDlgEdView->MoveMarkedObj( aSize ); // update of control model properties (position + size) in NbcMove
- pDlgEdView->MarkListHasChanged();
-
- // dialog model changed
- SetDialogModelChanged(sal_True);
- }
- }
- }
- }
-}
-
-
-void DlgEditor::Delete()
-{
- if( !pDlgEdView->AreObjectsMarked() )
- return;
-
- // remove control models of marked objects from dialog model
- sal_uLong nMark = pDlgEdView->GetMarkedObjectList().GetMarkCount();
-
- for( sal_uLong i = 0; i < nMark; i++ )
- {
- SdrObject* pObj = pDlgEdView->GetMarkedObjectList().GetMark(i)->GetMarkedSdrObj();
- DlgEdObj* pDlgEdObj = PTR_CAST(DlgEdObj, pObj);
-
- if ( pDlgEdObj && !pDlgEdObj->ISA(DlgEdForm) )
- {
- // get name from property
- ::rtl::OUString aName;
- uno::Reference< beans::XPropertySet > xPSet(pDlgEdObj->GetUnoControlModel(), uno::UNO_QUERY);
- if (xPSet.is())
- {
- xPSet->getPropertyValue( DLGED_PROP_NAME ) >>= aName;
- }
-
- // remove control from dialog model
- Reference< ::com::sun::star::container::XNameAccess > xNameAcc(pDlgEdObj->GetDlgEdForm()->GetUnoControlModel(), UNO_QUERY );
- if ( xNameAcc.is() && xNameAcc->hasByName(aName) )
- {
- Reference< ::com::sun::star::container::XNameContainer > xCont(xNameAcc, UNO_QUERY );
- if ( xCont.is() )
- {
- if( xCont->hasByName( aName ) )
- {
- Any aAny = xCont->getByName( aName );
- LocalizationMgr::deleteControlResourceIDsForDeletedEditorObject( this, aAny, aName );
- }
- xCont->removeByName( aName );
- }
- }
-
- // remove child from parent form
- pDlgEdForm->RemoveChild( pDlgEdObj );
- }
- }
-
- // update tab indices
- pDlgEdForm->UpdateTabIndices();
-
- pDlgEdView->BrkAction();
-
- sal_Bool bDlgMarked = UnmarkDialog();
- pDlgEdView->DeleteMarked();
- if( bDlgMarked )
- RemarkDialog();
-}
-
-
-sal_Bool DlgEditor::IsPasteAllowed()
-{
- sal_Bool bPaste = sal_False;
-
- // get clipboard
- Reference< datatransfer::clipboard::XClipboard > xClipboard = GetWindow()->GetClipboard();
- if ( xClipboard.is() )
- {
- // get clipboard content
- const sal_uInt32 nRef = Application::ReleaseSolarMutex();
- Reference< datatransfer::XTransferable > xTransf = xClipboard->getContents();
- Application::AcquireSolarMutex( nRef );
- if ( xTransf.is() )
- {
- if ( xTransf->isDataFlavorSupported( m_ClipboardDataFlavors[0] ) )
- {
- bPaste = sal_True;
- }
- }
- }
-
- return bPaste;
-}
-
-
-void DlgEditor::ShowProperties()
-{
- BasicIDEShell* pIDEShell = IDE_DLL()->GetShell();
- SfxViewFrame* pViewFrame = pIDEShell ? pIDEShell->GetViewFrame() : NULL;
- if ( pViewFrame && !pViewFrame->HasChildWindow( SID_SHOW_PROPERTYBROWSER ) )
- pViewFrame->ToggleChildWindow( SID_SHOW_PROPERTYBROWSER );
-}
-
-
-void DlgEditor::UpdatePropertyBrowserDelayed()
-{
- aMarkTimer.Start();
-}
-
-
-sal_Bool DlgEditor::IsModified() const
-{
- return pDlgEdModel->IsChanged() || bDialogModelChanged;
-}
-
-
-void DlgEditor::ClearModifyFlag()
-{
- pDlgEdModel->SetChanged( sal_False );
- bDialogModelChanged = sal_False;
-}
-
-
-#define LMARGPRN 1700
-#define RMARGPRN 900
-#define TMARGPRN 2000
-#define BMARGPRN 1000
-#define BORDERPRN 300
-
-
-void lcl_PrintHeader( Printer* pPrinter, const String& rTitle ) // not working yet
-{
- pPrinter->Push();
-
- short nLeftMargin = LMARGPRN;
- Size aSz = pPrinter->GetOutputSize();
- short nBorder = BORDERPRN;
-
- pPrinter->SetLineColor( COL_BLACK );
- pPrinter->SetFillColor();
-
- Font aFont( pPrinter->GetFont() );
- aFont.SetWeight( WEIGHT_BOLD );
- aFont.SetAlign( ALIGN_BOTTOM );
- pPrinter->SetFont( aFont );
-
- long nFontHeight = pPrinter->GetTextHeight();
-
- // 1.Border => Strich, 2+3 Border = Freiraum.
- long nYTop = TMARGPRN-3*nBorder-nFontHeight;
-
- long nXLeft = nLeftMargin-nBorder;
- long nXRight = aSz.Width()-RMARGPRN+nBorder;
-
- pPrinter->DrawRect( Rectangle(
- Point( nXLeft, nYTop ),
- Size( nXRight-nXLeft, aSz.Height() - nYTop - BMARGPRN + nBorder ) ) );
-
- long nY = TMARGPRN-2*nBorder;
- Point aPos( nLeftMargin, nY );
- pPrinter->DrawText( aPos, rTitle );
-
- nY = TMARGPRN-nBorder;
-
- pPrinter->DrawLine( Point( nXLeft, nY ), Point( nXRight, nY ) );
-
- pPrinter->Pop();
-}
-
-
-sal_Int32 DlgEditor::countPages( Printer* )
-{
- return 1;
-}
-
-void DlgEditor::printPage( sal_Int32 nPage, Printer* pPrinter, const String& rTitle )
-{
- if( nPage == 0 )
- Print( pPrinter, rTitle );
-}
-
-
-void DlgEditor::Print( Printer* pPrinter, const String& rTitle ) // not working yet
-{
- if( pDlgEdView )
- {
- MapMode aOldMap( pPrinter->GetMapMode());
- Font aOldFont( pPrinter->GetFont() );
-
- MapMode aMap( MAP_100TH_MM );
- pPrinter->SetMapMode( aMap );
- Font aFont;
- aFont.SetAlign( ALIGN_BOTTOM );
- aFont.SetSize( Size( 0, 360 ));
- pPrinter->SetFont( aFont );
-
- Size aPaperSz = pPrinter->GetOutputSize();
- aPaperSz.Width() -= (LMARGPRN+RMARGPRN);
- aPaperSz.Height() -= (TMARGPRN+BMARGPRN);
-
- lcl_PrintHeader( pPrinter, rTitle );
-
- Bitmap aDlg;
- Size aBmpSz( pPrinter->PixelToLogic( aDlg.GetSizePixel() ) );
- double nPaperSzWidth = aPaperSz.Width();
- double nPaperSzHeight = aPaperSz.Height();
- double nBmpSzWidth = aBmpSz.Width();
- double nBmpSzHeight = aBmpSz.Height();
- double nScaleX = (nPaperSzWidth / nBmpSzWidth );
- double nScaleY = (nPaperSzHeight / nBmpSzHeight );
-
- Size aOutputSz;
- if( nBmpSzHeight * nScaleX <= nPaperSzHeight )
- {
- aOutputSz.Width() = (long)(((double)nBmpSzWidth) * nScaleX);
- aOutputSz.Height() = (long)(((double)nBmpSzHeight) * nScaleX);
- }
- else
- {
- aOutputSz.Width() = (long)(((double)nBmpSzWidth) * nScaleY);
- aOutputSz.Height() = (long)(((double)nBmpSzHeight) * nScaleY);
- }
-
- Point aPosOffs(
- (aPaperSz.Width() / 2) - (aOutputSz.Width() / 2),
- (aPaperSz.Height()/ 2) - (aOutputSz.Height() / 2));
-
- aPosOffs.X() += LMARGPRN;
- aPosOffs.Y() += TMARGPRN;
-
- pPrinter->DrawBitmap( aPosOffs, aOutputSz, aDlg );
-
- pPrinter->SetMapMode( aOldMap );
- pPrinter->SetFont( aOldFont );
- }
-}
-
-
-bool DlgEditor::AdjustPageSize()
-{
- bool bAdjustedPageSize = false;
- Reference< beans::XPropertySet > xPSet( m_xUnoControlDialogModel, UNO_QUERY );
- if ( xPSet.is() )
- {
- sal_Int32 nFormXIn = 0, nFormYIn = 0, nFormWidthIn = 0, nFormHeightIn = 0;
- xPSet->getPropertyValue( DLGED_PROP_POSITIONX ) >>= nFormXIn;
- xPSet->getPropertyValue( DLGED_PROP_POSITIONY ) >>= nFormYIn;
- xPSet->getPropertyValue( DLGED_PROP_WIDTH ) >>= nFormWidthIn;
- xPSet->getPropertyValue( DLGED_PROP_HEIGHT ) >>= nFormHeightIn;
-
- sal_Int32 nFormX, nFormY, nFormWidth, nFormHeight;
- if ( pDlgEdForm && pDlgEdForm->TransformFormToSdrCoordinates( nFormXIn, nFormYIn, nFormWidthIn, nFormHeightIn, nFormX, nFormY, nFormWidth, nFormHeight ) )
- {
- Size aPageSizeDelta( 400, 300 );
- DBG_ASSERT( pWindow, "DlgEditor::AdjustPageSize: no window!" );
- if ( pWindow )
- aPageSizeDelta = pWindow->PixelToLogic( aPageSizeDelta, MapMode( MAP_100TH_MM ) );
-
- sal_Int32 nNewPageWidth = nFormX + nFormWidth + aPageSizeDelta.Width();
- sal_Int32 nNewPageHeight = nFormY + nFormHeight + aPageSizeDelta.Height();
-
- Size aPageSizeMin( DLGED_PAGE_WIDTH_MIN, DLGED_PAGE_HEIGHT_MIN );
- DBG_ASSERT( pWindow, "DlgEditor::AdjustPageSize: no window!" );
- if ( pWindow )
- aPageSizeMin = pWindow->PixelToLogic( aPageSizeMin, MapMode( MAP_100TH_MM ) );
- sal_Int32 nPageWidthMin = aPageSizeMin.Width();
- sal_Int32 nPageHeightMin = aPageSizeMin.Height();
-
- if ( nNewPageWidth < nPageWidthMin )
- nNewPageWidth = nPageWidthMin;
-
- if ( nNewPageHeight < nPageHeightMin )
- nNewPageHeight = nPageHeightMin;
-
- if ( pDlgEdPage )
- {
- Size aPageSize = pDlgEdPage->GetSize();
- if ( nNewPageWidth != aPageSize.Width() || nNewPageHeight != aPageSize.Height() )
- {
- Size aNewPageSize( nNewPageWidth, nNewPageHeight );
- pDlgEdPage->SetSize( aNewPageSize );
- DBG_ASSERT( pDlgEdView, "DlgEditor::AdjustPageSize: no view!" );
- if ( pDlgEdView )
- pDlgEdView->SetWorkArea( Rectangle( Point( 0, 0 ), aNewPageSize ) );
- bAdjustedPageSize = true;
- }
- }
- }
- }
-
- return bAdjustedPageSize;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */