2000-09-18 16:15:01 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2005-09-09 09:53:22 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2005-09-09 09:53:22 +00:00
|
|
|
* $RCSfile: textdrw.cxx,v $
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2007-09-27 11:29:48 +00:00
|
|
|
* $Revision: 1.12 $
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2007-09-27 11:29:48 +00:00
|
|
|
* last change: $Author: hr $ $Date: 2007-09-27 12:29:48 $
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2005-09-09 09:53:22 +00:00
|
|
|
* The Contents of this file are made available subject to
|
|
|
|
* the terms of GNU Lesser General Public License Version 2.1.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
|
|
|
*
|
2005-09-09 09:53:22 +00:00
|
|
|
* GNU Lesser General Public License Version 2.1
|
|
|
|
* =============================================
|
|
|
|
* Copyright 2005 by Sun Microsystems, Inc.
|
|
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2005-09-09 09:53:22 +00:00
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License version 2.1, as published by the Free Software Foundation.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2005-09-09 09:53:22 +00:00
|
|
|
* This library 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 for more details.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2005-09-09 09:53:22 +00:00
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
|
|
* MA 02111-1307 USA
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
2006-09-16 22:16:53 +00:00
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_sw.hxx"
|
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
#ifndef _SVDVIEW_HXX //autogen
|
|
|
|
#include <svx/svdview.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _URLOBJ_HXX //autogen
|
|
|
|
#include <tools/urlobj.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SVX_FMGLOB_HXX
|
|
|
|
#include <svx/fmglob.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SVDOUNO_HXX //autogen
|
|
|
|
#include <svx/svdouno.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _COM_SUN_STAR_FORM_FORMBUTTONTYPE_HPP_
|
|
|
|
#include <com/sun/star/form/FormButtonType.hpp>
|
|
|
|
#endif
|
|
|
|
#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
|
|
|
|
#include <com/sun/star/beans/XPropertySet.hpp>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef _VIEW_HXX
|
|
|
|
#include <view.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _WRTSH_HXX
|
|
|
|
#include <wrtsh.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _EDTWIN_HXX
|
|
|
|
#include <edtwin.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SWUNDO_HXX
|
|
|
|
#include <swundo.hxx>
|
|
|
|
#endif
|
2002-04-29 10:26:26 +00:00
|
|
|
#ifndef _BASESH_HXX
|
|
|
|
#include <basesh.hxx>
|
2000-09-18 16:15:01 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef _POOLFMT_HRC
|
|
|
|
#include <poolfmt.hrc>
|
|
|
|
#endif
|
|
|
|
|
2005-01-11 11:43:56 +00:00
|
|
|
#ifndef _DOCSH_HXX
|
|
|
|
#include <docsh.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFXDOCFILE_HXX
|
|
|
|
#include <sfx2/docfile.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef SVTOOLS_URIHELPER_HXX
|
|
|
|
#include <svtools/urihelper.hxx>
|
|
|
|
#endif
|
2003-03-27 14:45:43 +00:00
|
|
|
#ifndef _SV_SOUND_HXX
|
|
|
|
#include <vcl/sound.hxx>
|
|
|
|
#endif
|
|
|
|
|
2007-09-27 11:29:48 +00:00
|
|
|
#include <unomid.h>
|
|
|
|
|
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
using namespace ::com::sun::star;
|
|
|
|
using namespace ::rtl;
|
|
|
|
/*---------------------------------------------------------------------------
|
|
|
|
Beschreibung:
|
|
|
|
----------------------------------------------------------------------------*/
|
|
|
|
|
2002-04-29 10:26:26 +00:00
|
|
|
void SwBaseShell::InsertURLButton(const String& rURL, const String& rTarget, const String& rTxt)
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
|
|
|
SwWrtShell& rSh = GetShell();
|
|
|
|
|
|
|
|
if (!rSh.HasDrawView())
|
|
|
|
rSh.MakeDrawView();
|
|
|
|
SdrView *pSdrView = rSh.GetDrawView();
|
|
|
|
|
|
|
|
// OBJ_FM_BUTTON
|
2002-04-29 11:29:06 +00:00
|
|
|
pSdrView->SetDesignMode(TRUE);
|
2000-09-18 16:15:01 +00:00
|
|
|
pSdrView->SetCurrentObj(OBJ_FM_BUTTON);
|
|
|
|
pSdrView->SetEditMode(sal_False);
|
|
|
|
|
|
|
|
Point aStartPos(rSh.GetCharRect().Pos() + Point(0, 1));
|
|
|
|
|
|
|
|
rSh.StartAction();
|
2007-09-27 11:29:48 +00:00
|
|
|
rSh.StartUndo( UNDO_UI_INSERT_URLBTN );
|
2000-09-18 16:15:01 +00:00
|
|
|
if (rSh.BeginCreate(OBJ_FM_BUTTON, FmFormInventor, aStartPos))
|
|
|
|
{
|
|
|
|
pSdrView->SetOrtho(sal_False);
|
|
|
|
Size aSz(GetView().GetEditWin().PixelToLogic(Size(140, 20)));
|
|
|
|
Point aEndPos(aSz.Width(), aSz.Height());
|
|
|
|
|
|
|
|
rSh.MoveCreate(aStartPos + aEndPos);
|
|
|
|
rSh.EndCreate(SDRCREATE_FORCEEND);
|
|
|
|
|
2004-07-12 14:52:22 +00:00
|
|
|
const SdrMarkList& rMarkList = pSdrView->GetMarkedObjectList();
|
2000-09-18 16:15:01 +00:00
|
|
|
if (rMarkList.GetMark(0))
|
|
|
|
{
|
2006-07-25 11:44:30 +00:00
|
|
|
SdrUnoObj* pUnoCtrl = PTR_CAST(SdrUnoObj, rMarkList.GetMark(0)->GetMarkedSdrObj());
|
2000-09-18 16:15:01 +00:00
|
|
|
uno::Reference< awt::XControlModel > xControlModel = pUnoCtrl->GetUnoControlModel();
|
|
|
|
|
|
|
|
ASSERT( xControlModel.is(), "UNO-Control ohne Model" );
|
|
|
|
if( !xControlModel.is() )
|
|
|
|
return;
|
|
|
|
|
|
|
|
uno::Reference< beans::XPropertySet > xPropSet(xControlModel, uno::UNO_QUERY);
|
|
|
|
|
|
|
|
|
|
|
|
uno::Any aTmp;
|
|
|
|
|
|
|
|
aTmp <<= OUString(rTxt);
|
|
|
|
xPropSet->setPropertyValue( C2U("Label"), aTmp );
|
|
|
|
|
2005-01-11 11:43:56 +00:00
|
|
|
SfxMedium* pMedium = rSh.GetView().GetDocShell()->GetMedium();
|
|
|
|
INetURLObject aAbs;
|
|
|
|
if( pMedium )
|
|
|
|
aAbs = pMedium->GetURLObject();
|
|
|
|
|
|
|
|
aTmp <<= OUString(URIHelper::SmartRel2Abs(aAbs, rURL));
|
2000-09-18 16:15:01 +00:00
|
|
|
xPropSet->setPropertyValue( C2U("TargetURL"), aTmp );
|
|
|
|
|
|
|
|
if( rTarget.Len() )
|
|
|
|
{
|
|
|
|
aTmp <<= OUString(rTarget);
|
|
|
|
xPropSet->setPropertyValue( C2U("TargetFrame"), aTmp );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
form::FormButtonType eButtonType = form::FormButtonType_URL;
|
|
|
|
aTmp.setValue( &eButtonType, ::getCppuType((const form::FormButtonType*)0));
|
|
|
|
xPropSet->setPropertyValue( C2U("ButtonType"), aTmp );
|
2002-12-02 13:16:43 +00:00
|
|
|
|
2003-03-27 14:45:43 +00:00
|
|
|
if ( Sound::IsSoundFile( rURL ) )
|
|
|
|
{
|
|
|
|
// #105638# OJ
|
|
|
|
aTmp <<= sal_True;
|
|
|
|
xPropSet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DispatchURLInternal" )), aTmp );
|
|
|
|
}
|
2000-09-18 16:15:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if (rSh.IsObjSelected())
|
|
|
|
{
|
|
|
|
// rSh.ChgAnchor(FLY_AT_CNTNT);
|
|
|
|
rSh.UnSelectFrm();
|
|
|
|
}
|
|
|
|
}
|
2007-09-27 11:29:48 +00:00
|
|
|
rSh.EndUndo( UNDO_UI_INSERT_URLBTN );
|
2000-09-18 16:15:01 +00:00
|
|
|
rSh.EndAction();
|
|
|
|
}
|
|
|
|
|
|
|
|
|