Files
libreoffice/svx/source/form/fmexpl.cxx

589 lines
14 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
re-base on ALv2 code. Includes: Patch contributed by Christian Lippka impress212: #i113063# patch: dubios self assign in svx/source/dialog/framelink.cxx http://svn.apache.org/viewvc?view=revision&revision=1167619 Patches contributed by Mathias Bauer gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 cws mba34issues01: #i117712#: fix several resource errors introduced by IAccessible2 implementation http://svn.apache.org/viewvc?view=revision&revision=1172343 cws mba34issues01: #i117719#: use correct resource ID http://svn.apache.org/viewvc?view=revision&revision=1172351 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 Patches contributed by Armin Le-Grand #118804# corrected GraphicExporter behaviour on shortcut when pixel graphic is requested http://svn.apache.org/viewvc?view=revision&revision=1240195 fix for #118525#: Using primitives for chart sub-geometry visualisation http://svn.apache.org/viewvc?view=revision&revision=1226879 #118485# - Styles for OLEs are not saved. http://svn.apache.org/viewvc?view=revision&revision=1182166 #118524: apply patch, followup fixes to 118485 http://svn.apache.org/viewvc?view=revision&revision=1186077 13f79535-47bb-0310-9956-ffa450edef68 Patch contributed by Regina Henschel linecap: Reintegrating finished LineCap feature http://svn.apache.org/viewvc?view=revision&revision=1232507 Patch contributed by Wang Lei (leiw) #i118760# split the first table cell vertically, then undo&redo, the Presentation app will crash http://svn.apache.org/viewvc?view=revision&revision=1301361 cleanup globlmn hacks, undo dependent fixmes.
2012-11-21 22:06:52 +00:00
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
2000-09-18 16:07:07 +00:00
migrate to boost::gettext * all .ui files go from <interface> to <interface domain="MODULE"> e.g. vcl * all .src files go away and the english source strings folded into the .hrc as NC_("context", "source string") * ResMgr is dropped in favour of std::locale imbued by boost::locale::generator pointed at matching MODULE .mo files * UIConfig translations are folded into the module .mo, so e.g. UIConfig_cui goes from l10n target to normal one, so the res/lang.zips of UI files go away * translation via Translation::get(hrc-define-key, imbued-std::locale) * python can now be translated with its inbuilt gettext support (we keep the name strings.hrc there to keep finding the .hrc file uniform) so magic numbers can go away there * java and starbasic components can be translated via the pre-existing css.resource.StringResourceWithLocation mechanism * en-US res files go away, their strings are now the .hrc keys in the source code * remaining .res files are replaced by .mo files * in .res/.ui-lang-zip files, the old scheme missing translations of strings results in inserting the english original so something can be found, now the standard fallback of using the english original from the source key is used, so partial translations shrink dramatically in size * extract .hrc strings with hrcex which backs onto xgettext -C --add-comments --keyword=NC_:1c,2 --from-code=UTF-8 --no-wrap * extract .ui strings with uiex which backs onto xgettext --add-comments --no-wrap * qtz for gettext translations is generated at runtime as ascii-ified crc32 of content + "|" + msgid * [API CHANGE] remove deprecated binary .res resouce loader related uno apis com::sun::star::resource::OfficeResourceLoader com::sun::star::resource::XResourceBundleLoader com::sun::star::resource::XResourceBundle when translating strings via uno apis com.sun.star.resource.StringResourceWithLocation can continue to be used Change-Id: Ia2594a2672b7301d9c3421fdf31b6cfe7f3f8d0a
2017-06-11 20:56:30 +01:00
#include <svx/strings.hrc>
#include <fmexpl.hxx>
2000-09-18 16:07:07 +00:00
#include <helpids.h>
#include <svx/fmglob.hxx>
#include <fmservs.hxx>
#include <svx/fmmodel.hxx>
#include <fmexch.hxx>
#include <fmundo.hxx>
#include <fmpgeimp.hxx>
2000-09-18 16:07:07 +00:00
#include <svx/svxids.hrc>
2000-09-18 16:07:07 +00:00
#include <fmprop.hxx>
#include <bitmaps.hlst>
#include <svx/dialmgr.hxx>
#include <svx/svditer.hxx>
#include <svx/svdouno.hxx>
#include <svx/svdobj.hxx>
2000-09-18 16:07:07 +00:00
#include <vcl/msgbox.hxx>
#include <sfx2/dispatch.hxx>
#include <sfx2/objsh.hxx>
#include <sfx2/viewsh.hxx>
#include <sfx2/viewfrm.hxx>
2000-09-18 16:07:07 +00:00
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/form/FormComponentType.hpp>
#include <com/sun/star/awt/XTabControllerModel.hpp>
#include <vcl/menu.hxx>
#include <sfx2/objitem.hxx>
#include <sfx2/request.hxx>
#include <vcl/wrkwin.hxx>
#include <svx/fmshell.hxx>
#include <fmshimp.hxx>
#include <svx/fmpage.hxx>
2000-09-18 16:07:07 +00:00
#include <com/sun/star/io/XPersistObject.hpp>
#include <com/sun/star/sdb/CommandType.hpp>
#include <com/sun/star/beans/PropertyAttribute.hpp>
2000-10-20 13:18:57 +00:00
#include <comphelper/property.hxx>
#include <comphelper/processfactory.hxx>
2000-09-18 16:07:07 +00:00
using namespace ::svxform;
2001-04-09 10:19:35 +00:00
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::sdbc;
using namespace ::com::sun::star::sdb;
using namespace ::com::sun::star::form;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::container;
FmNavInsertedHint::FmNavInsertedHint( FmEntryData* pInsertedEntryData, sal_uInt32 nRelPos )
2000-09-18 16:07:07 +00:00
:pEntryData( pInsertedEntryData )
,nPos( nRelPos )
{
}
FmNavInsertedHint::~FmNavInsertedHint()
2000-09-18 16:07:07 +00:00
{
}
// class FmNavInsertedHint
FmNavModelReplacedHint::FmNavModelReplacedHint( FmEntryData* pAffectedEntryData )
2000-09-18 16:07:07 +00:00
:pEntryData( pAffectedEntryData )
{
}
FmNavModelReplacedHint::~FmNavModelReplacedHint()
2000-09-18 16:07:07 +00:00
{
}
FmNavRemovedHint::FmNavRemovedHint( FmEntryData* pRemovedEntryData )
2000-09-18 16:07:07 +00:00
:pEntryData( pRemovedEntryData )
{
}
FmNavRemovedHint::~FmNavRemovedHint()
2000-09-18 16:07:07 +00:00
{
}
FmNavNameChangedHint::FmNavNameChangedHint( FmEntryData* pData, const OUString& rNewName )
2000-09-18 16:07:07 +00:00
:pEntryData( pData )
,aNewName( rNewName )
{
}
FmNavNameChangedHint::~FmNavNameChangedHint()
2000-09-18 16:07:07 +00:00
{
}
FmNavClearedHint::FmNavClearedHint()
2000-09-18 16:07:07 +00:00
{
}
FmNavClearedHint::~FmNavClearedHint()
2000-09-18 16:07:07 +00:00
{
}
2000-09-18 16:07:07 +00:00
FmEntryDataList::FmEntryDataList()
{
}
2000-09-18 16:07:07 +00:00
FmEntryDataList::~FmEntryDataList()
{
}
FmEntryData* FmEntryDataList::remove( FmEntryData* pItem )
{
FmEntryDataBaseList::const_iterator aEnd = maEntryDataList.end();
for ( FmEntryDataBaseList::iterator it = maEntryDataList.begin();
it != aEnd;
++it
)
{
if ( *it == pItem )
{
maEntryDataList.erase( it );
break;
}
}
return pItem;
}
void FmEntryDataList::insert( FmEntryData* pItem, size_t Index )
{
if ( Index < maEntryDataList.size() )
{
FmEntryDataBaseList::iterator it = maEntryDataList.begin();
::std::advance( it, Index );
maEntryDataList.insert( it, pItem );
}
else
maEntryDataList.push_back( pItem );
}
void FmEntryDataList::clear()
{
for (FmEntryData* p : maEntryDataList)
delete p;
maEntryDataList.clear();
}
2000-09-18 16:07:07 +00:00
FmEntryData::FmEntryData( FmEntryData* pParentData, const Reference< XInterface >& _rxIFace )
2000-09-18 16:07:07 +00:00
:pParent( pParentData )
{
pChildList = new FmEntryDataList();
newObject( _rxIFace );
2000-09-18 16:07:07 +00:00
}
2000-09-18 16:07:07 +00:00
FmEntryData::~FmEntryData()
{
GetChildList()->clear();
2000-09-18 16:07:07 +00:00
delete pChildList;
}
void FmEntryData::newObject( const css::uno::Reference< css::uno::XInterface >& _rxIFace )
{
// do not just copy, normalize it
m_xNormalizedIFace.set( _rxIFace, UNO_QUERY );
m_xProperties.set(m_xNormalizedIFace, css::uno::UNO_QUERY);
m_xChild.set(m_xNormalizedIFace, css::uno::UNO_QUERY);
}
2000-09-18 16:07:07 +00:00
FmEntryData::FmEntryData( const FmEntryData& rEntryData )
{
pChildList = new FmEntryDataList();
aText = rEntryData.GetText();
2002-05-17 07:41:57 +00:00
m_aNormalImage = rEntryData.GetNormalImage();
2000-09-18 16:07:07 +00:00
pParent = rEntryData.GetParent();
FmEntryData* pChildData;
size_t nEntryCount = rEntryData.GetChildList()->size();
for( size_t i = 0; i < nEntryCount; i++ )
2000-09-18 16:07:07 +00:00
{
pChildData = rEntryData.GetChildList()->at( i );
2000-09-18 16:07:07 +00:00
FmEntryData* pNewChildData = pChildData->Clone();
pChildList->insert( pNewChildData, size_t(-1) );
2000-09-18 16:07:07 +00:00
}
m_xNormalizedIFace = rEntryData.m_xNormalizedIFace;
m_xProperties = rEntryData.m_xProperties;
m_xChild = rEntryData.m_xChild;
2000-09-18 16:07:07 +00:00
}
bool FmEntryData::IsEqualWithoutChildren( FmEntryData* pEntryData )
2000-09-18 16:07:07 +00:00
{
if(this == pEntryData)
return true;
2000-09-18 16:07:07 +00:00
if( !pEntryData )
return false;
2000-09-18 16:07:07 +00:00
if( aText != pEntryData->GetText() )
return false;
2000-09-18 16:07:07 +00:00
if( !pEntryData->GetParent() && pParent )
return false;
2000-09-18 16:07:07 +00:00
if( pEntryData->GetParent() && !pParent )
return false;
2000-09-18 16:07:07 +00:00
if( !pEntryData->GetParent() && !pParent )
return true;
2000-09-18 16:07:07 +00:00
2011-12-07 02:33:51 -08:00
if( !pParent->IsEqualWithoutChildren(pEntryData->GetParent()) )
return false;
2000-09-18 16:07:07 +00:00
return true;
2000-09-18 16:07:07 +00:00
}
FmFormData::FmFormData(const Reference< XForm >& _rxForm, FmFormData* _pParent)
: FmEntryData(_pParent, _rxForm)
, m_xForm(_rxForm)
2000-09-18 16:07:07 +00:00
{
// set images
m_aNormalImage = Image(RID_SVXBMP_FORM);
// set titel
2000-09-18 16:07:07 +00:00
if (m_xForm.is())
{
Reference< XPropertySet > xSet(m_xForm, UNO_QUERY);
2000-09-18 16:07:07 +00:00
if (xSet.is())
{
OUString aEntryName(::comphelper::getString(xSet->getPropertyValue( FM_PROP_NAME )));
2000-09-18 16:07:07 +00:00
SetText(aEntryName);
}
}
else
SetText( OUString() );
2000-09-18 16:07:07 +00:00
}
FmFormData::~FmFormData()
{
}
FmFormData::FmFormData( const FmFormData& rFormData )
:FmEntryData( rFormData )
{
m_xForm = rFormData.GetFormIface();
}
2000-09-18 16:07:07 +00:00
FmEntryData* FmFormData::Clone()
{
return new FmFormData( *this );
}
bool FmFormData::IsEqualWithoutChildren( FmEntryData* pEntryData )
2000-09-18 16:07:07 +00:00
{
if(this == pEntryData)
return true;
if( dynamic_cast<const FmFormData*>( pEntryData) == nullptr )
return false;
FmFormData* pFormData = static_cast<FmFormData*>(pEntryData);
if( m_xForm.get() != pFormData->GetFormIface().get() )
return false;
2000-09-18 16:07:07 +00:00
2011-12-07 02:33:51 -08:00
return FmEntryData::IsEqualWithoutChildren( pFormData );
2000-09-18 16:07:07 +00:00
}
FmControlData::FmControlData(const Reference< XFormComponent >& _rxComponent, FmFormData* _pParent)
2010-11-05 19:24:42 -07:00
: FmEntryData( _pParent, _rxComponent ),
m_xFormComponent( _rxComponent )
2000-09-18 16:07:07 +00:00
{
// set images
m_aNormalImage = GetImage();
2000-09-18 16:07:07 +00:00
// set titel
Reference< XPropertySet > xSet(m_xFormComponent, UNO_QUERY);
2000-09-18 16:07:07 +00:00
if( xSet.is() )
{
2000-10-20 13:18:57 +00:00
SetText( ::comphelper::getString(xSet->getPropertyValue( FM_PROP_NAME )));
2000-09-18 16:07:07 +00:00
}
}
2000-09-18 16:07:07 +00:00
FmControlData::~FmControlData()
{
}
2000-09-18 16:07:07 +00:00
FmControlData::FmControlData( const FmControlData& rControlData )
:FmEntryData( rControlData )
{
m_xFormComponent = rControlData.GetFormComponent();
}
2000-09-18 16:07:07 +00:00
FmEntryData* FmControlData::Clone()
{
return new FmControlData( *this );
}
Image FmControlData::GetImage() const
2000-09-18 16:07:07 +00:00
{
// Default-Image
Image aImage(BitmapEx(RID_SVXBMP_CONTROL));
2000-09-18 16:07:07 +00:00
Reference< XServiceInfo > xInfo( m_xFormComponent, UNO_QUERY );
if (!m_xFormComponent.is())
2000-09-18 16:07:07 +00:00
return aImage;
2000-09-18 16:07:07 +00:00
// Spezielle Control-Images
sal_Int16 nObjectType = getControlTypeByObject(xInfo);
switch (nObjectType)
{
case OBJ_FM_BUTTON:
aImage = Image(BitmapEx(RID_SVXBMP_BUTTON));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_FIXEDTEXT:
aImage = Image(BitmapEx(RID_SVXBMP_FIXEDTEXT));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_EDIT:
aImage = Image(BitmapEx(RID_SVXBMP_EDITBOX));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_RADIOBUTTON:
aImage = Image(BitmapEx(RID_SVXBMP_RADIOBUTTON));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_CHECKBOX:
aImage = Image(BitmapEx(RID_SVXBMP_CHECKBOX));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_LISTBOX:
aImage = Image(BitmapEx(RID_SVXBMP_LISTBOX));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_COMBOBOX:
aImage = Image(BitmapEx(RID_SVXBMP_COMBOBOX));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_NAVIGATIONBAR:
aImage = Image(BitmapEx(RID_SVXBMP_NAVIGATIONBAR));
break;
2000-09-18 16:07:07 +00:00
case OBJ_FM_GROUPBOX:
aImage = Image(BitmapEx(RID_SVXBMP_GROUPBOX));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_IMAGEBUTTON:
aImage = Image(BitmapEx(RID_SVXBMP_IMAGEBUTTON));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_FILECONTROL:
aImage = Image(BitmapEx(RID_SVXBMP_FILECONTROL));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_HIDDEN:
aImage = Image(BitmapEx(RID_SVXBMP_HIDDEN));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_DATEFIELD:
aImage = Image(BitmapEx(RID_SVXBMP_DATEFIELD));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_TIMEFIELD:
aImage = Image(BitmapEx(RID_SVXBMP_TIMEFIELD));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_NUMERICFIELD:
aImage = Image(BitmapEx(RID_SVXBMP_NUMERICFIELD));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_CURRENCYFIELD:
aImage = Image(BitmapEx(RID_SVXBMP_CURRENCYFIELD));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_PATTERNFIELD:
aImage = Image(BitmapEx(RID_SVXBMP_PATTERNFIELD));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_IMAGECONTROL:
aImage = Image(BitmapEx(RID_SVXBMP_IMAGECONTROL));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_FORMATTEDFIELD:
aImage = Image(BitmapEx(RID_SVXBMP_FORMATTEDFIELD));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_GRID:
aImage = Image(BitmapEx(RID_SVXBMP_GRID));
2000-09-18 16:07:07 +00:00
break;
case OBJ_FM_SCROLLBAR:
aImage = Image(BitmapEx(RID_SVXBMP_SCROLLBAR));
break;
case OBJ_FM_SPINBUTTON:
aImage = Image(BitmapEx(RID_SVXBMP_SPINBUTTON));
break;
2000-09-18 16:07:07 +00:00
}
return aImage;
}
bool FmControlData::IsEqualWithoutChildren( FmEntryData* pEntryData )
2000-09-18 16:07:07 +00:00
{
if(this == pEntryData)
return true;
2000-09-18 16:07:07 +00:00
if( dynamic_cast<const FmControlData*>( pEntryData) == nullptr )
return false;
FmControlData* pControlData = static_cast<FmControlData*>(pEntryData);
2000-09-18 16:07:07 +00:00
if( m_xFormComponent.get() != pControlData->GetFormComponent().get() )
return false;
2000-09-18 16:07:07 +00:00
2011-12-07 02:33:51 -08:00
return FmEntryData::IsEqualWithoutChildren( pControlData );
2000-09-18 16:07:07 +00:00
}
void FmControlData::ModelReplaced(const Reference< XFormComponent >& _rxNew)
2000-09-18 16:07:07 +00:00
{
2002-05-17 07:41:57 +00:00
m_xFormComponent = _rxNew;
newObject( m_xFormComponent );
// set images anew
m_aNormalImage = GetImage();
2000-09-18 16:07:07 +00:00
}
namespace svxform
2000-09-18 16:07:07 +00:00
{
NavigatorFrame::NavigatorFrame( SfxBindings* _pBindings, SfxChildWindow* _pMgr,
vcl::Window* _pParent )
:SfxDockingWindow( _pBindings, _pMgr, _pParent, WinBits(WB_STDMODELESS|WB_SIZEABLE|WB_ROLLABLE|WB_3DLOOK|WB_DOCKABLE) )
,SfxControllerItem( SID_FM_FMEXPLORER_CONTROL, *_pBindings )
2000-09-18 16:07:07 +00:00
{
SetHelpId( HID_FORM_NAVIGATOR_WIN );
2000-09-18 16:07:07 +00:00
m_pNavigatorTree = VclPtr<NavigatorTree>::Create( this );
m_pNavigatorTree->Show();
SetText( SvxResId(RID_STR_FMEXPLORER) );
SfxDockingWindow::SetFloatingSize( Size(200,200) );
2000-09-18 16:07:07 +00:00
}
NavigatorFrame::~NavigatorFrame()
{
disposeOnce();
}
void NavigatorFrame::dispose()
2000-09-18 16:07:07 +00:00
{
m_pNavigatorTree.disposeAndClear();
::SfxControllerItem::dispose();
SfxDockingWindow::dispose();
2000-09-18 16:07:07 +00:00
}
void NavigatorFrame::UpdateContent( FmFormShell* pFormShell )
2000-09-18 16:07:07 +00:00
{
m_pNavigatorTree->UpdateContent( pFormShell );
2000-09-18 16:07:07 +00:00
}
void NavigatorFrame::StateChanged( sal_uInt16 nSID, SfxItemState eState, const SfxPoolItem* pState )
2000-09-18 16:07:07 +00:00
{
if( !pState || SID_FM_FMEXPLORER_CONTROL != nSID )
return;
2000-09-18 16:07:07 +00:00
if( eState >= SfxItemState::DEFAULT )
2000-09-18 16:07:07 +00:00
{
FmFormShell* pShell = dynamic_cast<FmFormShell*>( static_cast<const SfxObjectItem*>(pState)->GetShell() );
UpdateContent( pShell );
2000-09-18 16:07:07 +00:00
}
else
UpdateContent( nullptr );
2000-09-18 16:07:07 +00:00
}
void NavigatorFrame::GetFocus()
2000-09-18 16:07:07 +00:00
{
if ( m_pNavigatorTree )
m_pNavigatorTree->GrabFocus();
else
SfxDockingWindow::GetFocus();
2000-09-18 16:07:07 +00:00
}
bool NavigatorFrame::Close()
2000-09-18 16:07:07 +00:00
{
UpdateContent( nullptr );
return SfxDockingWindow::Close();
2000-09-18 16:07:07 +00:00
}
void NavigatorFrame::FillInfo( SfxChildWinInfo& rInfo ) const
2000-09-18 16:07:07 +00:00
{
SfxDockingWindow::FillInfo( rInfo );
rInfo.bVisible = false;
2000-09-18 16:07:07 +00:00
}
Size NavigatorFrame::CalcDockingSize( SfxChildAlignment eAlign )
2000-09-18 16:07:07 +00:00
{
if ( ( eAlign == SfxChildAlignment::TOP ) || ( eAlign == SfxChildAlignment::BOTTOM ) )
return Size();
2000-09-18 16:07:07 +00:00
return SfxDockingWindow::CalcDockingSize( eAlign );
2000-09-18 16:07:07 +00:00
}
SfxChildAlignment NavigatorFrame::CheckAlignment( SfxChildAlignment _eActAlign, SfxChildAlignment _eAlign )
2000-09-18 16:07:07 +00:00
{
if ( ( _eAlign == SfxChildAlignment::LEFT ) || ( _eAlign == SfxChildAlignment::RIGHT ) || ( _eAlign == SfxChildAlignment::NOALIGNMENT ) )
return _eAlign;
return _eActAlign;
2000-09-18 16:07:07 +00:00
}
void NavigatorFrame::Resize()
2000-09-18 16:07:07 +00:00
{
SfxDockingWindow::Resize();
2000-09-18 16:07:07 +00:00
Size aLogOutputSize = PixelToLogic( GetOutputSizePixel(), MapUnit::MapAppFont );
Size aLogExplSize = aLogOutputSize;
aLogExplSize.Width() -= 6;
aLogExplSize.Height() -= 6;
2000-09-18 16:07:07 +00:00
Point aExplPos = LogicToPixel( Point(3,3), MapUnit::MapAppFont );
Size aExplSize = LogicToPixel( aLogExplSize, MapUnit::MapAppFont );
2000-09-18 16:07:07 +00:00
m_pNavigatorTree->SetPosSizePixel( aExplPos, aExplSize );
2000-09-18 16:07:07 +00:00
}
// class NavigatorFrameManager
2000-09-18 16:07:07 +00:00
SFX_IMPL_DOCKINGWINDOW( NavigatorFrameManager, SID_FM_SHOW_FMEXPLORER )
2000-09-18 16:07:07 +00:00
NavigatorFrameManager::NavigatorFrameManager( vcl::Window* _pParent, sal_uInt16 _nId,
SfxBindings* _pBindings, SfxChildWinInfo* _pInfo )
:SfxChildWindow( _pParent, _nId )
2000-09-18 16:07:07 +00:00
{
SetWindow( VclPtr<NavigatorFrame>::Create( _pBindings, this, _pParent ) );
static_cast<SfxDockingWindow*>(GetWindow())->Initialize( _pInfo );
2000-09-18 16:07:07 +00:00
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */