summaryrefslogtreecommitdiff
path: root/svx/source/cui/numpages.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/cui/numpages.cxx')
-rw-r--r--svx/source/cui/numpages.cxx4087
1 files changed, 0 insertions, 4087 deletions
diff --git a/svx/source/cui/numpages.cxx b/svx/source/cui/numpages.cxx
deleted file mode 100644
index 6069efd2cb..0000000000
--- a/svx/source/cui/numpages.cxx
+++ /dev/null
@@ -1,4087 +0,0 @@
-/*************************************************************************
- *
- * 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: numpages.cxx,v $
- * $Revision: 1.64 $
- *
- * 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_svx.hxx"
-
-#ifdef SVX_DLLIMPLEMENTATION
-#undef SVX_DLLIMPLEMENTATION
-#endif
-
-#include <com/sun/star/text/HoriOrientation.hpp>
-#include <com/sun/star/text/VertOrientation.hpp>
-#include <com/sun/star/text/RelOrientation.hpp>
-
-#include <numpages.hxx>
-#include <numpages.hrc>
-#include <svx/dialmgr.hxx>
-#ifndef _SVX_DIALOGS_HRC
-#include <svx/dialogs.hrc>
-#endif
-#include <tools/shl.hxx>
-#include <i18npool/mslangid.hxx>
-#include <svtools/valueset.hxx>
-#ifndef _SVX_HELPID_HRC
-#include <helpid.hrc>
-#endif
-#include <svx/numitem.hxx>
-#include <svtools/eitem.hxx>
-#include <vcl/svapp.hxx>
-#include <gallery.hxx>
-#include <svtools/urihelper.hxx>
-#include <svx/brshitem.hxx>
-#include <svtools/intitem.hxx>
-#include <sfx2/objsh.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/msgbox.hxx>
-#include "cuicharmap.hxx"
-#include <flstitem.hxx>
-#include <dlgutil.hxx>
-#include <svx/xtable.hxx>
-#include <drawitem.hxx>
-#include <numvset.hxx>
-#include <htmlmode.hxx>
-#include <svtools/pathoptions.hxx>
-#include <svtools/ctrltool.hxx>
-#include <unolingu.hxx>
-#include <com/sun/star/style/NumberingType.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/container/XIndexAccess.hpp>
-#include <com/sun/star/text/XDefaultNumberingProvider.hpp>
-#include <com/sun/star/text/XNumberingFormatter.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <comphelper/processfactory.hxx>
-#include <com/sun/star/text/XNumberingTypeInfo.hpp>
-
-#include <algorithm>
-#include <vector>
-#include "opengrf.hxx"
-
-#include <svx/dialogs.hrc> //CHINA001
-#include <sfx2/request.hxx> //CHINA001
-#include <svtools/aeitem.hxx> //add CHINA001
-#include <svtools/stritem.hxx>//add CHINA001
-#include <svtools/slstitm.hxx> //add CHINA001
-
-using namespace com::sun::star;
-using namespace com::sun::star::uno;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::i18n;
-using namespace com::sun::star::text;
-using namespace com::sun::star::container;
-using namespace com::sun::star::style;
-using rtl::OUString;
-#define C2U(cChar) OUString::createFromAscii(cChar)
-
-SV_IMPL_PTRARR(SvxNumSettingsArr_Impl,SvxNumSettings_ImplPtr);
-
-/*-----------------07.02.97 15.37-------------------
-
---------------------------------------------------*/
-#define NUM_PAGETYPE_BULLET 0
-#define NUM_PAGETYPE_SINGLENUM 1
-#define NUM_PAGETYPE_NUM 2
-#define NUM_PAGETYPE_BMP 3
-#define PAGETYPE_USER_START 10
-
-#define SHOW_NUMBERING 0
-#define SHOW_BULLET 1
-#define SHOW_BITMAP 2
-
-#define MAX_BMP_WIDTH 16
-#define MAX_BMP_HEIGHT 16
-
-static BOOL bLastRelative = FALSE;
-static const sal_Char cNumberingType[] = "NumberingType";
-static const sal_Char cValue[] = "Value";
-static const sal_Char cParentNumbering[] = "ParentNumbering";
-static const sal_Char cPrefix[] = "Prefix";
-static const sal_Char cSuffix[] = "Suffix";
-static const sal_Char cBulletChar[] = "BulletChar";
-static const sal_Char cBulletFontName[] = "BulletFontName";
-/* -----------------------------31.01.01 10:23--------------------------------
-
- ---------------------------------------------------------------------------*/
-Reference<XDefaultNumberingProvider> lcl_GetNumberingProvider()
-{
- Reference< XMultiServiceFactory > xMSF = ::comphelper::getProcessServiceFactory();
- Reference < XInterface > xI = xMSF->createInstance(
- ::rtl::OUString::createFromAscii( "com.sun.star.text.DefaultNumberingProvider" ) );
- Reference<XDefaultNumberingProvider> xRet(xI, UNO_QUERY);
- DBG_ASSERT(xRet.is(), "service missing: \"com.sun.star.text.DefaultNumberingProvider\"");
-
- return xRet;
-}
-/* -----------------------------31.01.01 11:40--------------------------------
-
- ---------------------------------------------------------------------------*/
-SvxNumSettings_ImplPtr lcl_CreateNumSettingsPtr(const Sequence<PropertyValue>& rLevelProps)
-{
- const PropertyValue* pValues = rLevelProps.getConstArray();
- SvxNumSettings_ImplPtr pNew = new SvxNumSettings_Impl;
- for(sal_Int32 j = 0; j < rLevelProps.getLength(); j++)
- {
- if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cNumberingType)))
- pValues[j].Value >>= pNew->nNumberType;
- else if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cPrefix)))
- pValues[j].Value >>= pNew->sPrefix;
- else if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cSuffix)))
- pValues[j].Value >>= pNew->sSuffix;
- else if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cParentNumbering)))
- pValues[j].Value >>= pNew->nParentNumbering;
- else if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cBulletChar)))
- pValues[j].Value >>= pNew->sBulletChar;
- else if(pValues[j].Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(cBulletFontName)))
- pValues[j].Value >>= pNew->sBulletFont;
- }
- return pNew;
-}
-/* -----------------28.10.98 08:32-------------------
- *
- * --------------------------------------------------*/
-// Die Auswahl an Bullets aus den StarSymbol
-static const sal_Unicode aBulletTypes[] =
-{
- 0x2022,
- 0x25cf,
- 0xe00c,
- 0xe00a,
- 0x2794,
- 0x27a2,
- 0x2717,
- 0x2714
-};
-/* -----------------28.10.98 09:42-------------------
- *
- * --------------------------------------------------*/
-static sal_Char __READONLY_DATA aNumChar[] =
-{
- 'A', //CHARS_UPPER_LETTER
- 'a', //CHARS_LOWER_LETTER
- 'I', //ROMAN_UPPER
- 'i', //ROMAN_LOWER
- '1', //ARABIC
- ' '
-};
-
-/*-----------------18.03.98 08:35-------------------
- Ist eins der maskierten Formate gesetzt?
---------------------------------------------------*/
-BOOL lcl_IsNumFmtSet(SvxNumRule* pNum, USHORT nLevelMask)
-{
- BOOL bRet = FALSE;
- USHORT nMask = 1;
- for( USHORT i = 0; i < SVX_MAX_NUM && !bRet; i++ )
- {
- if(nLevelMask & nMask)
- bRet |= 0 != pNum->Get( i );
- nMask <<= 1 ;
- }
- return bRet;
-}
-/* -----------------28.10.98 08:50-------------------
- *
- * --------------------------------------------------*/
-
-Font& lcl_GetDefaultBulletFont()
-{
- static BOOL bInit = 0;
- static Font aDefBulletFont( UniString::CreateFromAscii(
- RTL_CONSTASCII_STRINGPARAM( "StarSymbol" ) ),
- String(), Size( 0, 14 ) );
- if(!bInit)
- {
- aDefBulletFont.SetCharSet( RTL_TEXTENCODING_SYMBOL );
- aDefBulletFont.SetFamily( FAMILY_DONTKNOW );
- aDefBulletFont.SetPitch( PITCH_DONTKNOW );
- aDefBulletFont.SetWeight( WEIGHT_DONTKNOW );
- aDefBulletFont.SetTransparent( TRUE );
- bInit = TRUE;
- }
- return aDefBulletFont;
-}
-
-
-/**************************************************************************/
-/* */
-/* */
-/**************************************************************************/
-
-
-SvxSingleNumPickTabPage::SvxSingleNumPickTabPage(Window* pParent,
- const SfxItemSet& rSet) :
- SfxTabPage( pParent, SVX_RES( RID_SVXPAGE_PICK_SINGLE_NUM ), rSet ),
- aValuesFL( this, SVX_RES(FL_VALUES) ),
- pExamplesVS( new SvxNumValueSet(this, SVX_RES(VS_VALUES), NUM_PAGETYPE_SINGLENUM )),
- pActNum(0),
- pSaveNum(0),
- nActNumLvl( USHRT_MAX ),
- bModified(FALSE),
- bPreset(FALSE),
- nNumItemId(SID_ATTR_NUMBERING_RULE)
-{
- FreeResource();
- SetExchangeSupport();
- pExamplesVS->SetSelectHdl(LINK(this, SvxSingleNumPickTabPage, NumSelectHdl_Impl));
- pExamplesVS->SetDoubleClickHdl(LINK(this, SvxSingleNumPickTabPage, DoubleClickHdl_Impl));
- pExamplesVS->SetHelpId(HID_VALUESET_SINGLENUM );
-
- Reference<XDefaultNumberingProvider> xDefNum = lcl_GetNumberingProvider();
- if(xDefNum.is())
- {
- Sequence< Sequence< PropertyValue > > aNumberings;
- LanguageType eLang = Application::GetSettings().GetLanguage();
- Locale aLocale = SvxCreateLocale(eLang);
- try
- {
- aNumberings =
- xDefNum->getDefaultContinuousNumberingLevels( aLocale );
-
-
- sal_Int32 nLength = aNumberings.getLength() > NUM_VALUSET_COUNT ? NUM_VALUSET_COUNT :aNumberings.getLength();
-
- const Sequence<PropertyValue>* pValuesArr = aNumberings.getConstArray();
- for(sal_Int32 i = 0; i < nLength; i++)
- {
- SvxNumSettings_ImplPtr pNew = lcl_CreateNumSettingsPtr(pValuesArr[i]);
- aNumSettingsArr.Insert(pNew, aNumSettingsArr.Count());
- }
- }
- catch(Exception&)
- {
- }
- Reference<XNumberingFormatter> xFormat(xDefNum, UNO_QUERY);
- pExamplesVS->SetNumberingSettings(aNumberings, xFormat, aLocale);
- }
-}
-/*-----------------07.02.97 12.08-------------------
-
---------------------------------------------------*/
-
- SvxSingleNumPickTabPage::~SvxSingleNumPickTabPage()
-{
- delete pActNum;
- delete pExamplesVS;
- delete pSaveNum;
- aNumSettingsArr.DeleteAndDestroy(0, aNumSettingsArr.Count());
-}
-
-/*-----------------07.02.97 12.13-------------------
-
---------------------------------------------------*/
-
-SfxTabPage* SvxSingleNumPickTabPage::Create( Window* pParent,
- const SfxItemSet& rAttrSet)
-{
- return new SvxSingleNumPickTabPage(pParent, rAttrSet);
-}
-
-/*-----------------07.02.97 12.09-------------------
-
---------------------------------------------------*/
-
-
-BOOL SvxSingleNumPickTabPage::FillItemSet( SfxItemSet& rSet )
-{
- if(bPreset || bModified && pSaveNum)
- {
- *pSaveNum = *pActNum;
- rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId);
- rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, bPreset));
- }
-
- return bModified;
-}
-
-/*-----------------08.02.97 16.27-------------------
-
---------------------------------------------------*/
-
-void SvxSingleNumPickTabPage::ActivatePage(const SfxItemSet& rSet)
-{
- const SfxPoolItem* pItem;
- bPreset = FALSE;
- BOOL bIsPreset = FALSE;
- const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet();
- if(pExampleSet)
- {
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, FALSE, &pItem))
- bIsPreset = ((const SfxBoolItem*)pItem)->GetValue();
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, FALSE, &pItem))
- nActNumLvl = ((const SfxUInt16Item*)pItem)->GetValue();
- }
- if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, FALSE, &pItem))
- {
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
- }
- if(*pSaveNum != *pActNum)
- {
- *pActNum = *pSaveNum;
- pExamplesVS->SetNoSelection();
- }
- // ersten Eintrag vorselektieren
- if(pActNum && (!lcl_IsNumFmtSet(pActNum, nActNumLvl) || bIsPreset))
- {
- pExamplesVS->SelectItem(1);
- NumSelectHdl_Impl(pExamplesVS);
- bPreset = TRUE;
- }
- bPreset |= bIsPreset;
-
- bModified = FALSE;
-}
-
-/*-----------------08.02.97 11.28-------------------
-
---------------------------------------------------*/
-
-int SvxSingleNumPickTabPage::DeactivatePage(SfxItemSet *_pSet)
-{
- if(_pSet)
- FillItemSet(*_pSet);
- return TRUE;
-}
-
-/*-----------------07.02.97 12.09-------------------
-
---------------------------------------------------*/
-
-
-void SvxSingleNumPickTabPage::Reset( const SfxItemSet& rSet )
-{
- const SfxPoolItem* pItem;
-// nActNumLvl = ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel();
- //im Draw gibt es das Item als WhichId, im Writer nur als SlotId
- SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, FALSE, &pItem);
- if(eState != SFX_ITEM_SET)
- {
- nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE);
- eState = rSet.GetItemState(nNumItemId, FALSE, &pItem);
-
- if( eState != SFX_ITEM_SET )
- {
- pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, TRUE ) );
- eState = SFX_ITEM_SET;
- }
- }
- DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!");
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
-
- if(!pActNum)
- pActNum = new SvxNumRule(*pSaveNum);
- else if(*pSaveNum != *pActNum)
- *pActNum = *pSaveNum;
-}
-/*-----------------08.02.97 11.40-------------------
-
---------------------------------------------------*/
-
-IMPL_LINK(SvxSingleNumPickTabPage, NumSelectHdl_Impl, ValueSet*, EMPTYARG)
-{
- if(pActNum)
- {
- bPreset = FALSE;
- bModified = TRUE;
- USHORT nIdx = pExamplesVS->GetSelectItemId() - 1;
- DBG_ASSERT(aNumSettingsArr.Count() > nIdx, "wrong index");
- if(aNumSettingsArr.Count() <= nIdx)
- return 0;
- SvxNumSettings_ImplPtr _pSet = aNumSettingsArr.GetObject(nIdx);
- sal_Int16 eNewType = _pSet->nNumberType;
- const sal_Unicode cLocalPrefix = _pSet->sPrefix.getLength() ? _pSet->sPrefix.getStr()[0] : 0;
- const sal_Unicode cLocalSuffix = _pSet->sSuffix.getLength() ? _pSet->sSuffix.getStr()[0] : 0;
-
- USHORT nMask = 1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aFmt(pActNum->GetLevel(i));
- aFmt.SetNumberingType(eNewType);
- String aEmptyStr;
- if(cLocalPrefix == ' ')
- aFmt.SetPrefix( aEmptyStr );
- else
- aFmt.SetPrefix(_pSet->sPrefix);
- if(cLocalSuffix == ' ')
- aFmt.SetSuffix( aEmptyStr );
- else
- aFmt.SetSuffix(_pSet->sSuffix);
- aFmt.SetCharFmtName(sNumCharFmtName);
- // #62069# // #92724#
- aFmt.SetBulletRelSize(100);
- pActNum->SetLevel(i, aFmt);
- }
- nMask <<= 1 ;
- }
- }
- return 0;
-}
-
-/*-----------------06.06.97 11.15-------------------
-
---------------------------------------------------*/
-IMPL_LINK(SvxSingleNumPickTabPage, DoubleClickHdl_Impl, ValueSet*, EMPTYARG)
-{
- NumSelectHdl_Impl(pExamplesVS);
- OKButton& rOk = GetTabDialog()->GetOKButton();
- rOk.GetClickHdl().Call(&rOk);
- return 0;
-}
-
-/**************************************************************************/
-/* */
-/* */
-/**************************************************************************/
-
-
-SvxBulletPickTabPage::SvxBulletPickTabPage(Window* pParent,
- const SfxItemSet& rSet) :
- SfxTabPage( pParent, SVX_RES( RID_SVXPAGE_PICK_BULLET ), rSet ),
- aValuesFL( this, SVX_RES(FL_VALUES) ),
- pExamplesVS( new SvxNumValueSet(this, SVX_RES(VS_VALUES), NUM_PAGETYPE_BULLET )),
- pActNum(0),
- pSaveNum(0),
- nActNumLvl( USHRT_MAX ),
- bModified(FALSE),
- bPreset(FALSE),
- nNumItemId(SID_ATTR_NUMBERING_RULE)
-{
- FreeResource();
- SetExchangeSupport();
- pExamplesVS->SetSelectHdl(LINK(this, SvxBulletPickTabPage, NumSelectHdl_Impl));
- pExamplesVS->SetDoubleClickHdl(LINK(this, SvxBulletPickTabPage, DoubleClickHdl_Impl));
- pExamplesVS->SetHelpId(HID_VALUESET_BULLET );
-
-}
-/*-----------------07.02.97 12.10-------------------
-
---------------------------------------------------*/
-
-
- SvxBulletPickTabPage::~SvxBulletPickTabPage()
-{
- delete pActNum;
- delete pExamplesVS;
- delete pSaveNum;
-}
-/*-----------------07.02.97 12.10-------------------
-
---------------------------------------------------*/
-
-
-SfxTabPage* SvxBulletPickTabPage::Create( Window* pParent,
- const SfxItemSet& rAttrSet)
-{
- return new SvxBulletPickTabPage(pParent, rAttrSet);
-}
-
-/*-----------------07.02.97 12.10-------------------
-
---------------------------------------------------*/
-
-
-BOOL SvxBulletPickTabPage::FillItemSet( SfxItemSet& rSet )
-{
- if(bPreset || bModified && pActNum)
- {
- *pSaveNum = *pActNum;
- rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId);
- rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, bPreset));
- }
- return bModified;
-}
-/*-----------------08.02.97 16.28-------------------
-
---------------------------------------------------*/
-
-void SvxBulletPickTabPage::ActivatePage(const SfxItemSet& rSet)
-{
- const SfxPoolItem* pItem;
- bPreset = FALSE;
- BOOL bIsPreset = FALSE;
- const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet();
- if(pExampleSet)
- {
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, FALSE, &pItem))
- bIsPreset = ((const SfxBoolItem*)pItem)->GetValue();
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, FALSE, &pItem))
- nActNumLvl = ((const SfxUInt16Item*)pItem)->GetValue();
- }
- if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, FALSE, &pItem))
- {
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
- }
- if(*pSaveNum != *pActNum)
- {
- *pActNum = *pSaveNum;
- pExamplesVS->SetNoSelection();
- }
- // ersten Eintrag vorselektieren
- if(pActNum && (!lcl_IsNumFmtSet(pActNum, nActNumLvl) || bIsPreset))
- {
- pExamplesVS->SelectItem(1);
- NumSelectHdl_Impl(pExamplesVS);
- bPreset = TRUE;
- }
- bPreset |= bIsPreset;
- bModified = FALSE;
-}
-/*-----------------08.02.97 11.28-------------------
-
---------------------------------------------------*/
-
-int SvxBulletPickTabPage::DeactivatePage(SfxItemSet *_pSet)
-{
- if(_pSet)
- FillItemSet(*_pSet);
- return TRUE;
-}
-
-/*-----------------07.02.97 12.11-------------------
-
---------------------------------------------------*/
-
-
-void SvxBulletPickTabPage::Reset( const SfxItemSet& rSet )
-{
- const SfxPoolItem* pItem;
- //im Draw gibt es das Item als WhichId, im Writer nur als SlotId
- SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, FALSE, &pItem);
- if(eState != SFX_ITEM_SET)
- {
- nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE);
- eState = rSet.GetItemState(nNumItemId, FALSE, &pItem);
-
- if( eState != SFX_ITEM_SET )
- {
- pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, TRUE ) );
- eState = SFX_ITEM_SET;
- }
-
- }
- DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!");
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
-
-// nActNumLvl = ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel();
-
- if(!pActNum)
- pActNum = new SvxNumRule(*pSaveNum);
- else if(*pSaveNum != *pActNum)
- *pActNum = *pSaveNum;
-}
-/*-----------------08.02.97 11.58-------------------
-
---------------------------------------------------*/
-
-IMPL_LINK(SvxBulletPickTabPage, NumSelectHdl_Impl, ValueSet*, EMPTYARG)
-{
- if(pActNum)
- {
- bPreset = FALSE;
- bModified = TRUE;
- sal_Unicode cChar = aBulletTypes[pExamplesVS->GetSelectItemId() - 1];
- Font& rActBulletFont = lcl_GetDefaultBulletFont();
-
- USHORT nMask = 1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aFmt(pActNum->GetLevel(i));
- aFmt.SetNumberingType( SVX_NUM_CHAR_SPECIAL );
- aFmt.SetBulletFont(&rActBulletFont);
- aFmt.SetBulletChar(cChar );
- aFmt.SetCharFmtName(sBulletCharFmtName);
- // #62069# // #92724#
- aFmt.SetBulletRelSize(45);
- pActNum->SetLevel(i, aFmt);
- }
- nMask <<= 1;
- }
- }
-
- return 0;
-}
-
-/*-----------------06.06.97 11.16-------------------
-
---------------------------------------------------*/
-IMPL_LINK(SvxBulletPickTabPage, DoubleClickHdl_Impl, ValueSet*, EMPTYARG)
-{
- NumSelectHdl_Impl(pExamplesVS);
- OKButton& rOk = GetTabDialog()->GetOKButton();
- rOk.GetClickHdl().Call(&rOk);
- return 0;
-}
-
-//Add CHINA001
-void SvxBulletPickTabPage::PageCreated(SfxAllItemSet aSet)
-{
-
- SFX_ITEMSET_ARG (&aSet,pBulletCharFmt,SfxStringItem,SID_BULLET_CHAR_FMT,sal_False);
-
- if (pBulletCharFmt)
- SetCharFmtName( pBulletCharFmt->GetValue());
-
-
-}
-//end of add CHINA001
-/**************************************************************************/
-/* */
-/* */
-/**************************************************************************/
-
-
-SvxNumPickTabPage::SvxNumPickTabPage(Window* pParent,
- const SfxItemSet& rSet) :
- SfxTabPage( pParent, SVX_RES( RID_SVXPAGE_PICK_NUM ), rSet ),
- aValuesFL( this, SVX_RES(FL_VALUES) ),
- pExamplesVS( new SvxNumValueSet(this, SVX_RES(VS_VALUES), NUM_PAGETYPE_NUM )),
- pActNum(0),
- pSaveNum(0),
- nActNumLvl( USHRT_MAX ),
- nNumItemId(SID_ATTR_NUMBERING_RULE),
- bModified(FALSE),
- bPreset(FALSE)
-{
-
- FreeResource();
-
- SetExchangeSupport();
-
- pExamplesVS->SetSelectHdl(LINK(this, SvxNumPickTabPage, NumSelectHdl_Impl));
- pExamplesVS->SetDoubleClickHdl(LINK(this, SvxNumPickTabPage, DoubleClickHdl_Impl));
- pExamplesVS->SetHelpId(HID_VALUESET_NUM );
-
- Reference<XDefaultNumberingProvider> xDefNum = lcl_GetNumberingProvider();
- if(xDefNum.is())
- {
- Sequence<Reference<XIndexAccess> > aOutlineAccess;
- LanguageType eLang = Application::GetSettings().GetLanguage();
- Locale aLocale = SvxCreateLocale(eLang);
- try
- {
- aOutlineAccess = xDefNum->getDefaultOutlineNumberings( aLocale );
-
- for(sal_Int32 nItem = 0;
- nItem < aOutlineAccess.getLength() && nItem < NUM_VALUSET_COUNT;
- nItem++ )
- {
- SvxNumSettingsArr_Impl& rItemArr = aNumSettingsArrays[ nItem ];
-
- Reference<XIndexAccess> xLevel = aOutlineAccess.getConstArray()[nItem];
- for(sal_Int32 nLevel = 0; nLevel < xLevel->getCount() && nLevel < 5; nLevel++)
- {
- Any aValueAny = xLevel->getByIndex(nLevel);
- Sequence<PropertyValue> aLevelProps;
- aValueAny >>= aLevelProps;
- SvxNumSettings_ImplPtr pNew = lcl_CreateNumSettingsPtr(aLevelProps);
- rItemArr.Insert( pNew, rItemArr.Count() );
- }
- }
- }
- catch(Exception&)
- {
- }
- Reference<XNumberingFormatter> xFormat(xDefNum, UNO_QUERY);
- pExamplesVS->SetOutlineNumberingSettings(aOutlineAccess, xFormat, aLocale);
- }
-}
-/*-----------------07.02.97 12.12-------------------
-
---------------------------------------------------*/
-
-
- SvxNumPickTabPage::~SvxNumPickTabPage()
-{
- delete pActNum;
- delete pExamplesVS;
- delete pSaveNum;
-}
-
-/*-----------------07.02.97 12.12-------------------
-
---------------------------------------------------*/
-
-
-SfxTabPage* SvxNumPickTabPage::Create( Window* pParent,
- const SfxItemSet& rAttrSet)
-{
- return new SvxNumPickTabPage(pParent, rAttrSet);
-}
-
-/*-----------------07.02.97 12.12-------------------
-
---------------------------------------------------*/
-
-
-BOOL SvxNumPickTabPage::FillItemSet( SfxItemSet& rSet )
-{
- if(bPreset || bModified && pActNum)
- {
- *pSaveNum = *pActNum;
- rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId);
- rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, bPreset));
- }
- return bModified;
-}
-/*-----------------08.02.97 16.28-------------------
-
---------------------------------------------------*/
-
-void SvxNumPickTabPage::ActivatePage(const SfxItemSet& rSet)
-{
- const SfxPoolItem* pItem;
- bPreset = FALSE;
- BOOL bIsPreset = FALSE;
- const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet();
- if(pExampleSet)
- {
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, FALSE, &pItem))
- bIsPreset = ((const SfxBoolItem*)pItem)->GetValue();
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, FALSE, &pItem))
- nActNumLvl = ((const SfxUInt16Item*)pItem)->GetValue();
- }
- if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, FALSE, &pItem))
- {
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
- }
- if(*pSaveNum != *pActNum)
- {
- *pActNum = *pSaveNum;
- pExamplesVS->SetNoSelection();
- }
- // ersten Eintrag vorselektieren
- if(pActNum && (!lcl_IsNumFmtSet(pActNum, nActNumLvl) || bIsPreset))
- {
- pExamplesVS->SelectItem(1);
- NumSelectHdl_Impl(pExamplesVS);
- bPreset = TRUE;
- }
- bPreset |= bIsPreset;
- bModified = FALSE;
-}
-
-/* -----------------08.02.97 11.29-------------------
-
---------------------------------------------------*/
-
-int SvxNumPickTabPage::DeactivatePage(SfxItemSet *_pSet)
-{
- if(_pSet)
- FillItemSet(*_pSet);
- return TRUE;
-}
-
-/*-----------------07.02.97 12.12-------------------
-
---------------------------------------------------*/
-
-void SvxNumPickTabPage::Reset( const SfxItemSet& rSet )
-{
- const SfxPoolItem* pItem;
- //im Draw gibt es das Item als WhichId, im Writer nur als SlotId
- SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, FALSE, &pItem);
- if(eState != SFX_ITEM_SET)
- {
- nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE);
- eState = rSet.GetItemState(nNumItemId, FALSE, &pItem);
-
- if( eState != SFX_ITEM_SET )
- {
- pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, TRUE ) );
- eState = SFX_ITEM_SET;
- }
-
- }
- DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!");
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
-
-// nActNumLvl = ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel();
- if(!pActNum)
- pActNum = new SvxNumRule(*pSaveNum);
- else if(*pSaveNum != *pActNum)
- *pActNum = *pSaveNum;
-
-}
-
-/*-----------------08.02.97 11.58-------------------
- Hier werden alle Ebenen veraendert,
---------------------------------------------------*/
-
-IMPL_LINK(SvxNumPickTabPage, NumSelectHdl_Impl, ValueSet*, EMPTYARG)
-{
- if(pActNum)
- {
- bPreset = FALSE;
- bModified = TRUE;
-
- const FontList* pList = 0;
-
- SvxNumSettingsArr_Impl& rItemArr = aNumSettingsArrays[pExamplesVS->GetSelectItemId() - 1];
-
- Font& rActBulletFont = lcl_GetDefaultBulletFont();
- SvxNumSettings_ImplPtr pLevelSettings = 0;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(rItemArr.Count() > i)
- pLevelSettings = rItemArr[i];
- if(!pLevelSettings)
- break;
- SvxNumberFormat aFmt(pActNum->GetLevel(i));
- aFmt.SetNumberingType( pLevelSettings->nNumberType );
- USHORT nUpperLevelOrChar = (USHORT)pLevelSettings->nParentNumbering;
- if(aFmt.GetNumberingType() == SVX_NUM_CHAR_SPECIAL)
- {
- if( pLevelSettings->sBulletFont.getLength() &&
- pLevelSettings->sBulletFont.compareTo(
- rActBulletFont.GetName()))
- {
- //search for the font
- if(!pList)
- {
- SfxObjectShell* pCurDocShell = SfxObjectShell::Current();
- const SvxFontListItem* pFontListItem =
- (const SvxFontListItem* )pCurDocShell
- ->GetItem( SID_ATTR_CHAR_FONTLIST );
- pList = pFontListItem ? pFontListItem->GetFontList() : 0;
- }
- if(pList && pList->IsAvailable( pLevelSettings->sBulletFont ) )
- {
- FontInfo aInfo = pList->Get(
- pLevelSettings->sBulletFont,WEIGHT_NORMAL, ITALIC_NONE);
- Font aFont(aInfo);
- aFmt.SetBulletFont(&aFont);
- }
- else
- {
- //if it cannot be found then create a new one
- Font aCreateFont( pLevelSettings->sBulletFont,
- String(), Size( 0, 14 ) );
- aCreateFont.SetCharSet( RTL_TEXTENCODING_DONTKNOW );
- aCreateFont.SetFamily( FAMILY_DONTKNOW );
- aCreateFont.SetPitch( PITCH_DONTKNOW );
- aCreateFont.SetWeight( WEIGHT_DONTKNOW );
- aCreateFont.SetTransparent( TRUE );
- aFmt.SetBulletFont( &aCreateFont );
- }
- }
- else
- aFmt.SetBulletFont( &rActBulletFont );
-
- aFmt.SetBulletChar( pLevelSettings->sBulletChar.getLength()
- ? pLevelSettings->sBulletChar.getStr()[0]
- : 0 );
- aFmt.SetCharFmtName( sBulletCharFmtName );
- // #62069# // #92724#
- aFmt.SetBulletRelSize(45);
- }
- else
- {
- aFmt.SetIncludeUpperLevels(sal::static_int_cast< BYTE >(0 != nUpperLevelOrChar ? pActNum->GetLevelCount() : 0));
- aFmt.SetCharFmtName(sNumCharFmtName);
- // #62069# // #92724#
- aFmt.SetBulletRelSize(100);
- }
- aFmt.SetPrefix(pLevelSettings->sPrefix);
- aFmt.SetSuffix(pLevelSettings->sSuffix);
- pActNum->SetLevel(i, aFmt);
- }
- }
- return 0;
-}
-
-/*-----------------06.06.97 11.16-------------------
-
---------------------------------------------------*/
-IMPL_LINK(SvxNumPickTabPage, DoubleClickHdl_Impl, ValueSet*, EMPTYARG)
-{
- NumSelectHdl_Impl(pExamplesVS);
- OKButton& rOk = GetTabDialog()->GetOKButton();
- rOk.GetClickHdl().Call(&rOk);
- return 0;
-}
-
-//add CHINA001 begin
-void SvxNumPickTabPage::PageCreated(SfxAllItemSet aSet)
-{
- SFX_ITEMSET_ARG (&aSet,pNumCharFmt,SfxStringItem,SID_NUM_CHAR_FMT,sal_False);
- SFX_ITEMSET_ARG (&aSet,pBulletCharFmt,SfxStringItem,SID_BULLET_CHAR_FMT,sal_False);
-
-
- if (pNumCharFmt &&pBulletCharFmt)
- SetCharFmtNames( pNumCharFmt->GetValue(),pBulletCharFmt->GetValue());
-}
-//end of CHINA001
-/*-----------------07.02.97 15.59-------------------
-
---------------------------------------------------*/
-void lcl_PaintLevel(OutputDevice* pVDev, sal_Int16 nNumberingType,
- const OUString& rBulletChar, const OUString& rText, const OUString& rFontName,
- Point& rLeft, Font& rRuleFont, const Font& rTextFont)
-{
-
- if(NumberingType::CHAR_SPECIAL == nNumberingType )
- {
- rRuleFont.SetStyleName(rFontName);
- pVDev->SetFont(rRuleFont);
- pVDev->DrawText(rLeft, rBulletChar);
- rLeft.X() += pVDev->GetTextWidth(rBulletChar);
- }
- else
- {
- pVDev->SetFont(rTextFont);
- pVDev->DrawText(rLeft, rText);
- rLeft.X() += pVDev->GetTextWidth(rText);
- }
-}
-
-/**************************************************************************/
-/* */
-/* */
-/**************************************************************************/
-
-SvxBitmapPickTabPage::SvxBitmapPickTabPage(Window* pParent,
- const SfxItemSet& rSet) :
- SfxTabPage( pParent, SVX_RES( RID_SVXPAGE_PICK_BMP ), rSet ),
- aValuesFL( this, SVX_RES(FL_VALUES) ),
- pExamplesVS( new SvxBmpNumValueSet(this, SVX_RES(VS_VALUES)/*, aGrfNames*/ )),
- aErrorText( this, SVX_RES(FT_ERROR)),
- aLinkedCB( this, SVX_RES(CB_LINKED)),
- pActNum(0),
- pSaveNum(0),
- nActNumLvl( USHRT_MAX ),
- nNumItemId(SID_ATTR_NUMBERING_RULE),
- bModified(FALSE),
- bPreset(FALSE)
-{
- FreeResource();
- SetExchangeSupport();
- eCoreUnit = rSet.GetPool()->GetMetric(rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE));
- pExamplesVS->SetSelectHdl(LINK(this, SvxBitmapPickTabPage, NumSelectHdl_Impl));
- pExamplesVS->SetDoubleClickHdl(LINK(this, SvxBitmapPickTabPage, DoubleClickHdl_Impl));
- aLinkedCB.SetClickHdl(LINK(this, SvxBitmapPickTabPage, LinkBmpHdl_Impl));
-
- // Grafiknamen ermitteln
-
- GalleryExplorer::FillObjList(GALLERY_THEME_BULLETS, aGrfNames);
- pExamplesVS->SetHelpId(HID_VALUESET_NUMBMP );
- for(USHORT i = 0; i < aGrfNames.Count(); i++)
- {
- pExamplesVS->InsertItem( i + 1, i);
- String* pGrfNm = (String*) aGrfNames.GetObject(i);
- INetURLObject aObj(*pGrfNm);
- if(aObj.GetProtocol() == INET_PROT_FILE)
- *pGrfNm = aObj.PathToFileName();
- pExamplesVS->SetItemText( i + 1, *pGrfNm );
- }
- if(!aGrfNames.Count())
- {
- aErrorText.Show();
- }
- else
- {
- pExamplesVS->Show();
- pExamplesVS->Format();
- }
-
-}
-
-/*-----------------12.02.97 07.46-------------------
-
---------------------------------------------------*/
-
- SvxBitmapPickTabPage::~SvxBitmapPickTabPage()
-{
- String* pStr = (String*)aGrfNames.First();
- while( pStr )
- {
- delete pStr;
- pStr = (String*)aGrfNames.Next();
- }
- delete pExamplesVS;
- delete pActNum;
- delete pSaveNum;
-}
-
-/*-----------------12.02.97 07.46-------------------
-
---------------------------------------------------*/
-
-SfxTabPage* SvxBitmapPickTabPage::Create( Window* pParent,
- const SfxItemSet& rAttrSet)
-{
- return new SvxBitmapPickTabPage(pParent, rAttrSet);
-}
-
-/*-----------------12.02.97 07.46-------------------
-
---------------------------------------------------*/
-
-void SvxBitmapPickTabPage::ActivatePage(const SfxItemSet& rSet)
-{
- const SfxPoolItem* pItem;
- bPreset = FALSE;
- BOOL bIsPreset = FALSE;
-// nActNumLvl = ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel();
- const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet();
- if(pExampleSet)
- {
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, FALSE, &pItem))
- bIsPreset = ((const SfxBoolItem*)pItem)->GetValue();
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, FALSE, &pItem))
- nActNumLvl = ((const SfxUInt16Item*)pItem)->GetValue();
- }
- if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, FALSE, &pItem))
- {
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
- }
- if(*pSaveNum != *pActNum)
- {
- *pActNum = *pSaveNum;
- pExamplesVS->SetNoSelection();
- }
- // ersten Eintrag vorselektieren
- if(aGrfNames.Count() &&
- (pActNum && (!lcl_IsNumFmtSet(pActNum, nActNumLvl) || bIsPreset)))
- {
- pExamplesVS->SelectItem(1);
- NumSelectHdl_Impl(pExamplesVS);
- bPreset = TRUE;
- }
- bPreset |= bIsPreset;
- bModified = FALSE;
-}
-/*-----------------12.02.97 07.46-------------------
-
---------------------------------------------------*/
-
-int SvxBitmapPickTabPage::DeactivatePage(SfxItemSet *_pSet)
-{
- if(_pSet)
- FillItemSet(*_pSet);
- return TRUE;
-}
-/*-----------------12.02.97 07.46-------------------
-
---------------------------------------------------*/
-
-BOOL SvxBitmapPickTabPage::FillItemSet( SfxItemSet& rSet )
-{
- if ( !aGrfNames.Count() )
- {
-// das ist im SfxItemSet leider nicht zulaessig #52134#
-// rSet.DisableItem(SID_ATTR_NUMBERING_RULE);
- return FALSE;
- }
- if(bPreset || bModified && pActNum)
- {
- *pSaveNum = *pActNum;
- rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId);
- rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, bPreset));
- }
-
- return bModified;
-}
-/*-----------------12.02.97 07.46-------------------
-
---------------------------------------------------*/
-
-void SvxBitmapPickTabPage::Reset( const SfxItemSet& rSet )
-{
- const SfxPoolItem* pItem;
- //im Draw gibt es das Item als WhichId, im Writer nur als SlotId
- SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, FALSE, &pItem);
- if(eState != SFX_ITEM_SET)
- {
- nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE);
- eState = rSet.GetItemState(nNumItemId, FALSE, &pItem);
-
- if( eState != SFX_ITEM_SET )
- {
- pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, TRUE ) );
- eState = SFX_ITEM_SET;
- }
-
- }
- DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!");
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
-
- if(!pActNum)
- pActNum = new SvxNumRule(*pSaveNum);
- else if(*pSaveNum != *pActNum)
- *pActNum = *pSaveNum;
- if(!pActNum->IsFeatureSupported(NUM_ENABLE_LINKED_BMP))
- {
- aLinkedCB.Check(FALSE);
- aLinkedCB.Enable(FALSE);
- }
- else if(!pActNum->IsFeatureSupported(NUM_ENABLE_EMBEDDED_BMP))
- {
- aLinkedCB.Check(TRUE);
- aLinkedCB.Enable(FALSE);
- }
-}
-
-/*-----------------12.02.97 07.53-------------------
-
---------------------------------------------------*/
-
-IMPL_LINK(SvxBitmapPickTabPage, NumSelectHdl_Impl, ValueSet*, EMPTYARG)
-{
- if(pActNum)
- {
- bPreset = FALSE;
- bModified = TRUE;
- USHORT nIdx = pExamplesVS->GetSelectItemId() - 1;
-
- String* pGrfName = 0;
- if(aGrfNames.Count() > nIdx)
- pGrfName = (String*)aGrfNames.GetObject(nIdx);
-
- USHORT nMask = 1;
- String aEmptyStr;
- USHORT nSetNumberingType = SVX_NUM_BITMAP;
- if(aLinkedCB.IsChecked())
- nSetNumberingType |= LINK_TOKEN;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aFmt(pActNum->GetLevel(i));
- aFmt.SetNumberingType(nSetNumberingType);
- aFmt.SetPrefix( aEmptyStr );
- aFmt.SetSuffix( aEmptyStr );
- aFmt.SetCharFmtName( sNumCharFmtName );
-
- Graphic aGraphic;
- if(GalleryExplorer::GetGraphicObj( GALLERY_THEME_BULLETS, nIdx, &aGraphic))
- {
- Size aSize = SvxNumberFormat::GetGraphicSizeMM100(&aGraphic);
- sal_Int16 eOrient = text::VertOrientation::LINE_CENTER;
- aSize = OutputDevice::LogicToLogic(aSize, MAP_100TH_MM, (MapUnit)eCoreUnit);
- SvxBrushItem aBrush(aGraphic, GPOS_AREA, SID_ATTR_BRUSH );
- aFmt.SetGraphicBrush( &aBrush, &aSize, &eOrient );
- }
- else if(pGrfName)
- aFmt.SetGraphic( *pGrfName );
- pActNum->SetLevel(i, aFmt);
- }
- nMask <<= 1 ;
- }
- }
-
- return 0;
-}
-
-/*-----------------06.06.97 11.17-------------------
-
---------------------------------------------------*/
-IMPL_LINK(SvxBitmapPickTabPage, DoubleClickHdl_Impl, ValueSet*, EMPTYARG)
-{
- NumSelectHdl_Impl(pExamplesVS);
- OKButton& rOk = GetTabDialog()->GetOKButton();
- rOk.GetClickHdl().Call(&rOk);
- return 0;
-}
-/* -----------------03.11.99 13:46-------------------
-
- --------------------------------------------------*/
-IMPL_LINK(SvxBitmapPickTabPage, LinkBmpHdl_Impl, CheckBox*, EMPTYARG )
-{
- if(!pExamplesVS->IsNoSelection())
- {
- NumSelectHdl_Impl(pExamplesVS);
- }
- return 0;
-}
-/*-----------------13.02.97 09.40-------------------
-
---------------------------------------------------*/
-
-//CHINA001 SvxBmpNumValueSet::SvxBmpNumValueSet( Window* pParent, const ResId& rResId/*, const List& rStrNames*/ ) :
-//CHINA001
-//CHINA001 SvxNumValueSet( pParent, rResId, NUM_PAGETYPE_BMP ),
-//CHINA001 // rStrList ( rStrNames ),
-//CHINA001 bGrfNotFound( FALSE )
-//CHINA001
-//CHINA001 {
-//CHINA001 GalleryExplorer::BeginLocking(GALLERY_THEME_BULLETS);
-//CHINA001 SetStyle( GetStyle() | WB_VSCROLL );
-//CHINA001 SetLineCount( 3 );
-//CHINA001 aFormatTimer.SetTimeout(300);
-//CHINA001 aFormatTimer.SetTimeoutHdl(LINK(this, SvxBmpNumValueSet, FormatHdl_Impl));
-//CHINA001 }
-//CHINA001
-//CHINA001 /*-----------------13.02.97 09.41-------------------
-//CHINA001
-//CHINA001 --------------------------------------------------*/
-//CHINA001
-//CHINA001 SvxBmpNumValueSet::~SvxBmpNumValueSet()
-//CHINA001 {
-//CHINA001 GalleryExplorer::EndLocking(GALLERY_THEME_BULLETS);
-//CHINA001 aFormatTimer.Stop();
-//CHINA001 }
-//CHINA001 /*-----------------13.02.97 09.41-------------------
-//CHINA001
-//CHINA001 --------------------------------------------------*/
-//CHINA001
-//CHINA001 void SvxBmpNumValueSet::UserDraw( const UserDrawEvent& rUDEvt )
-//CHINA001 {
-//CHINA001 SvxNumValueSet::UserDraw(rUDEvt);
-//CHINA001
-//CHINA001 Rectangle aRect = rUDEvt.GetRect();
-//CHINA001 OutputDevice* pDev = rUDEvt.GetDevice();
-//CHINA001 USHORT nItemId = rUDEvt.GetItemId();
-//CHINA001 Point aBLPos = aRect.TopLeft();
-//CHINA001
-//CHINA001 int nRectHeight = aRect.GetHeight();
-//CHINA001 Size aSize(nRectHeight/8, nRectHeight/8);
-//CHINA001
-//CHINA001 Graphic aGraphic;
-//CHINA001 if(!GalleryExplorer::GetGraphicObj( GALLERY_THEME_BULLETS, nItemId - 1,
-//CHINA001 &aGraphic, NULL))
-//CHINA001 {
-//CHINA001 bGrfNotFound = TRUE;
-//CHINA001 }
-//CHINA001 else
-//CHINA001 {
-//CHINA001 Point aPos(aBLPos.X() + 5, 0);
-//CHINA001 for( USHORT i = 0; i < 3; i++ )
-//CHINA001 {
-//CHINA001 USHORT nY = 11 + i * 33;
-//CHINA001 aPos.Y() = aBLPos.Y() + nRectHeight * nY / 100;
-//CHINA001 aGraphic.Draw( pDev, aPos, aSize );
-//CHINA001 }
-//CHINA001 }
-//CHINA001 }
-//CHINA001
-//CHINA001 /*-----------------14.02.97 07.34-------------------
-//CHINA001
-//CHINA001 --------------------------------------------------*/
-//CHINA001
-//CHINA001 IMPL_LINK(SvxBmpNumValueSet, FormatHdl_Impl, Timer*, EMPTYARG)
-//CHINA001 {
-//CHINA001 // nur, wenn eine Grafik nicht da war, muss formatiert werden
-//CHINA001 if(bGrfNotFound)
-//CHINA001 {
-//CHINA001 bGrfNotFound = FALSE;
-//CHINA001 Format();
-//CHINA001 }
-//CHINA001 Invalidate();
-//CHINA001 return 0;
-//CHINA001 }
-/*-----------------01.12.97 16:15-------------------
- Tabpage Numerierungsoptionen
---------------------------------------------------*/
-#define NUM_NO_GRAPHIC 1000
-SvxNumOptionsTabPage::SvxNumOptionsTabPage(Window* pParent,
- const SfxItemSet& rSet) :
- SfxTabPage( pParent, SVX_RES( RID_SVXPAGE_NUM_OPTIONS ), rSet ),
-
- aFormatFL( this, SVX_RES(FL_FORMAT )),
- aLevelFT( this, SVX_RES(FT_LEVEL )),
- aLevelLB( this, SVX_RES(LB_LEVEL )),
- aFmtFT( this, SVX_RES(FT_FMT )),
- aFmtLB( this, SVX_RES(LB_FMT )),
- aPrefixFT( this, SVX_RES(FT_PREFIX )),
- aPrefixED( this, SVX_RES(ED_PREFIX )),
- aSuffixFT( this, SVX_RES(FT_SUFFIX )),
- aSuffixED( this, SVX_RES(ED_SUFFIX )),
- aCharFmtFT( this, SVX_RES(FT_CHARFMT )),
- aCharFmtLB( this, SVX_RES(LB_CHARFMT )),
- aBulColorFT( this, SVX_RES(FT_BUL_COLOR)),
- aBulColLB( this, SVX_RES(LB_BUL_COLOR)),
- aBulRelSizeFT( this, SVX_RES(FT_BUL_REL_SIZE)),
- aBulRelSizeMF( this, SVX_RES(MF_BUL_REL_SIZE)),
- aAllLevelFT( this, SVX_RES(FT_ALL_LEVEL)),
- aAllLevelNF( this, SVX_RES(NF_ALL_LEVEL)),
- aStartFT( this, SVX_RES(FT_START )),
- aStartED( this, SVX_RES(ED_START )),
- aBulletPB( this, SVX_RES(PB_BULLET )),
- aAlignFT( this, SVX_RES(FT_ALIGN )),
- aAlignLB( this, SVX_RES(LB_ALIGN )),
- aBitmapFT( this, SVX_RES(FT_BITMAP )),
- aBitmapMB( this, SVX_RES(MB_BITMAP )),
- aSizeFT( this, SVX_RES(FT_SIZE )),
- aWidthMF( this, SVX_RES(MF_WIDTH )),
- aMultFT( this, SVX_RES(FT_MULT )),
- aHeightMF( this, SVX_RES(MF_HEIGHT )),
- aRatioCB( this, SVX_RES(CB_RATIO )),
- aOrientFT( this, SVX_RES(FT_ORIENT )),
- aOrientLB( this, SVX_RES(LB_ORIENT )),
- aSameLevelFL( this, SVX_RES(FL_SAME_LEVEL)),
- aSameLevelCB( this, SVX_RES(CB_SAME_LEVEL)),
- pPreviewWIN( new SvxNumberingPreview(this, SVX_RES(WIN_PREVIEW ))),
- pActNum(0),
- pSaveNum(0),
- bLastWidthModified(FALSE),
- bModified(FALSE),
- bPreset(FALSE),
- bAutomaticCharStyles(TRUE),
- bHTMLMode(FALSE),
- bMenuButtonInitialized(FALSE),
- sBullet(SVX_RES(STR_BULLET)),
- nBullet(0xff),
- nActNumLvl(USHRT_MAX),
- nNumItemId(SID_ATTR_NUMBERING_RULE)
-{
- sStartWith = aStartFT.GetText();
- pPreviewWIN->SetBackground(Wallpaper(Color(COL_TRANSPARENT)));
- SetExchangeSupport();
- aActBulletFont = lcl_GetDefaultBulletFont();
-
- aBulletPB.SetClickHdl(LINK(this, SvxNumOptionsTabPage, BulletHdl_Impl));
- aFmtLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, NumberTypeSelectHdl_Impl));
- aBitmapMB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, GraphicHdl_Impl));
- aLevelLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, LevelHdl_Impl));
- aCharFmtLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, CharFmtHdl_Impl));
- aWidthMF.SetModifyHdl(LINK(this, SvxNumOptionsTabPage, SizeHdl_Impl));
- aHeightMF.SetModifyHdl(LINK(this, SvxNumOptionsTabPage, SizeHdl_Impl));
- aRatioCB.SetClickHdl(LINK(this, SvxNumOptionsTabPage, RatioHdl_Impl));
- aStartED.SetModifyHdl(LINK(this, SvxNumOptionsTabPage, EditModifyHdl_Impl));
- aPrefixED.SetModifyHdl(LINK(this, SvxNumOptionsTabPage, EditModifyHdl_Impl));
- aSuffixED.SetModifyHdl(LINK(this, SvxNumOptionsTabPage, EditModifyHdl_Impl));
- aAllLevelNF.SetModifyHdl(LINK(this,SvxNumOptionsTabPage, AllLevelHdl_Impl));
- aOrientLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, OrientHdl_Impl));
- aSameLevelCB.SetClickHdl(LINK(this, SvxNumOptionsTabPage, SameLevelHdl_Impl));
- aBulRelSizeMF.SetModifyHdl(LINK(this,SvxNumOptionsTabPage, BulRelSizeHdl_Impl));
- aBulColLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, BulColorHdl_Impl));
- aInvalidateTimer.SetTimeoutHdl(LINK(this, SvxNumOptionsTabPage, PreviewInvalidateHdl_Impl));
- aInvalidateTimer.SetTimeout(50);
-
- aBitmapMB.GetPopupMenu()->SetHighlightHdl(LINK(this, SvxNumOptionsTabPage, PopupActivateHdl_Impl));
- PopupMenu* pPopup = new PopupMenu;
- aBitmapMB.GetPopupMenu()->SetPopupMenu( MN_GALLERY, pPopup );
-
- pPopup->InsertItem( NUM_NO_GRAPHIC, String(SVX_RES(ST_POPUP_EMPTY_ENTRY)) );
- pPopup->EnableItem( NUM_NO_GRAPHIC, FALSE );
-
- eCoreUnit = rSet.GetPool()->GetMetric(rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE));
-
- FreeResource();
-
- //get advanced numbering types from the component
- Reference<XDefaultNumberingProvider> xDefNum = lcl_GetNumberingProvider();
- Reference<XNumberingTypeInfo> xInfo(xDefNum, UNO_QUERY);
-
- // Extended numbering schemes present in the resource but not offered by
- // the i18n framework per configuration must be removed from the listbox.
- // Watch out for the ugly 0x88/*SVX_NUM_BITMAP|0x80*/ to not remove that.
- const USHORT nDontRemove = 0xffff;
- ::std::vector< USHORT> aRemove( aFmtLB.GetEntryCount(), nDontRemove);
- for (size_t i=0; i<aRemove.size(); ++i)
- {
- USHORT nEntryData = (USHORT)(ULONG)aFmtLB.GetEntryData(
- sal::static_int_cast< USHORT >(i));
- if (nEntryData > NumberingType::CHARS_LOWER_LETTER_N &&
- nEntryData != (SVX_NUM_BITMAP | 0x80))
- aRemove[i] = nEntryData;
- }
- if(xInfo.is())
- {
- Sequence<sal_Int16> aTypes = xInfo->getSupportedNumberingTypes( );
- const sal_Int16* pTypes = aTypes.getConstArray();
- for(sal_Int32 nType = 0; nType < aTypes.getLength(); nType++)
- {
- sal_Int16 nCurrent = pTypes[nType];
- if(nCurrent > NumberingType::CHARS_LOWER_LETTER_N)
- {
- sal_Bool bInsert = sal_True;
- for(USHORT nEntry = 0; nEntry < aFmtLB.GetEntryCount(); nEntry++)
- {
- USHORT nEntryData = (USHORT)(ULONG)aFmtLB.GetEntryData(nEntry);
- if(nEntryData == (USHORT) nCurrent)
- {
- bInsert = sal_False;
- aRemove[nEntry] = nDontRemove;
- break;
- }
- }
- if(bInsert)
- {
- OUString aIdent = xInfo->getNumberingIdentifier( nCurrent );
- USHORT nPos = aFmtLB.InsertEntry(aIdent);
- aFmtLB.SetEntryData(nPos,(void*)(ULONG)nCurrent);
- }
- }
- }
- }
- for (size_t i=0; i<aRemove.size(); ++i)
- {
- if (aRemove[i] != nDontRemove)
- {
- USHORT nPos = aFmtLB.GetEntryPos( (void*)(ULONG)aRemove[i]);
- aFmtLB.RemoveEntry( nPos);
- }
- }
-}
-
-/*-----------------01.12.97 16:30-------------------
-
---------------------------------------------------*/
-SvxNumOptionsTabPage::~SvxNumOptionsTabPage()
-{
- delete aBitmapMB.GetPopupMenu()->GetPopupMenu( MN_GALLERY );
- String* pStr = (String*)aGrfNames.First();
- while( pStr )
- {
- delete pStr;
- pStr = (String*)aGrfNames.Next();
- }
- delete pActNum;
- delete pPreviewWIN;
- delete pSaveNum;
-}
-
-/*-----------------03.12.97 07:52-------------------
-
---------------------------------------------------*/
-void SvxNumOptionsTabPage::SetMetric(FieldUnit eMetric)
-{
- if(eMetric == FUNIT_MM)
- {
- aWidthMF .SetDecimalDigits(1);
- aHeightMF .SetDecimalDigits(1);
- }
- aWidthMF .SetUnit( eMetric );
- aHeightMF .SetUnit( eMetric );
-}
-
-/*-----------------01.12.97 16:30-------------------
-
---------------------------------------------------*/
-SfxTabPage* SvxNumOptionsTabPage::Create( Window* pParent,
- const SfxItemSet& rAttrSet)
-{
- return new SvxNumOptionsTabPage(pParent, rAttrSet);
-};
-/*-----------------01.12.97 16:29-------------------
-
---------------------------------------------------*/
-void SvxNumOptionsTabPage::ActivatePage(const SfxItemSet& rSet)
-{
- const SfxPoolItem* pItem;
- const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet();
- UINT16 nTmpNumLvl = USHRT_MAX;
- if(pExampleSet)
- {
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, FALSE, &pItem))
- bPreset = ((const SfxBoolItem*)pItem)->GetValue();
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, FALSE, &pItem))
- nTmpNumLvl = ((const SfxUInt16Item*)pItem)->GetValue();
- }
- if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, FALSE, &pItem))
- {
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
- }
- //
- bModified = (!pActNum->Get( 0 ) || bPreset);
- if(*pActNum != *pSaveNum ||
- nActNumLvl != nTmpNumLvl)
- {
- nActNumLvl = nTmpNumLvl;
- USHORT nMask = 1;
- aLevelLB.SetUpdateMode(FALSE);
- aLevelLB.SetNoSelection();
- aLevelLB.SelectEntryPos( pActNum->GetLevelCount(), nActNumLvl == USHRT_MAX);
- if(nActNumLvl != USHRT_MAX)
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- aLevelLB.SelectEntryPos( i, TRUE);
- nMask <<= 1 ;
- }
- aLevelLB.SetUpdateMode(TRUE);
- *pActNum = *pSaveNum;
- InitControls();
- }
-
-}
-/*-----------------01.12.97 16:29-------------------
-
---------------------------------------------------*/
-int SvxNumOptionsTabPage::DeactivatePage(SfxItemSet * _pSet)
-{
- if(_pSet)
- FillItemSet(*_pSet);
- return TRUE;
-}
-/*-----------------01.12.97 16:29-------------------
-
---------------------------------------------------*/
-BOOL SvxNumOptionsTabPage::FillItemSet( SfxItemSet& rSet )
-{
- rSet.Put(SfxUInt16Item(SID_PARAM_CUR_NUM_LEVEL, nActNumLvl));
- if(bModified && pActNum)
- {
- *pSaveNum = *pActNum;
- rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId);
- rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, FALSE));
- }
- return bModified;
-};
-/*-----------------01.12.97 16:29-------------------
-
---------------------------------------------------*/
-void SvxNumOptionsTabPage::Reset( const SfxItemSet& rSet )
-{
- const SfxPoolItem* pItem;
- //im Draw gibt es das Item als WhichId, im Writer nur als SlotId
- SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, FALSE, &pItem);
- if(eState != SFX_ITEM_SET)
- {
- nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE);
- eState = rSet.GetItemState(nNumItemId, FALSE, &pItem);
-
- if( eState != SFX_ITEM_SET )
- {
- pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, TRUE ) );
- eState = SFX_ITEM_SET;
- }
-
- }
- DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!");
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
-
- // Ebenen einfuegen
- if(!aLevelLB.GetEntryCount())
- {
- for(USHORT i = 1; i <= pSaveNum->GetLevelCount(); i++)
- aLevelLB.InsertEntry( UniString::CreateFromInt32(i));
- if(pSaveNum->GetLevelCount() > 1)
- {
- String sEntry( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "1 - " ) ) );
- sEntry += UniString::CreateFromInt32( pSaveNum->GetLevelCount() );
- aLevelLB.InsertEntry(sEntry);
- aLevelLB.SelectEntry(sEntry);
- }
- else
- aLevelLB.SelectEntryPos(0);
- }
- else
- aLevelLB.SelectEntryPos(aLevelLB.GetEntryCount() - 1);
-
-// nActNumLvl = ((SwNumBulletTabDialog*)GetTabDialog())->GetActNumLevel();
- USHORT nMask = 1;
- aLevelLB.SetUpdateMode(FALSE);
- aLevelLB.SetNoSelection();
- if(nActNumLvl == USHRT_MAX)
- {
- aLevelLB.SelectEntryPos( pSaveNum->GetLevelCount(), TRUE);
- }
- else
- for(USHORT i = 0; i < pSaveNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- aLevelLB.SelectEntryPos( i, TRUE);
- nMask <<= 1 ;
- }
- aLevelLB.SetUpdateMode(TRUE);
-
- if(!pActNum)
- pActNum = new SvxNumRule(*pSaveNum);
- else if(*pSaveNum != *pActNum)
- *pActNum = *pSaveNum;
- pPreviewWIN->SetNumRule(pActNum);
- aSameLevelCB.Check(pActNum->IsContinuousNumbering());
-
- //ColorListBox bei Bedarf fuellen
- if ( pActNum->IsFeatureSupported( NUM_BULLET_COLOR ) )
- {
- SfxObjectShell* pDocSh = SfxObjectShell::Current();
- DBG_ASSERT( pDocSh, "DocShell not found!" );
- XColorTable* pColorTable = NULL;
- FASTBOOL bKillTable = FALSE;
- if ( pDocSh )
- {
- pItem = pDocSh->GetItem( SID_COLOR_TABLE );
- if ( pItem )
- pColorTable = ( (SvxColorTableItem*)pItem )->GetColorTable();
- }
-
- if ( !pColorTable )
- {
- pColorTable = new XColorTable( SvtPathOptions().GetPalettePath() );
- bKillTable = TRUE;
- }
-
- aBulColLB.InsertEntry( Color( COL_AUTO ), SVX_RESSTR( RID_SVXSTR_AUTOMATIC ));
-
- for ( long i = 0; i < pColorTable->Count(); i++ )
- {
- XColorEntry* pEntry = pColorTable->GetColor(i);
- aBulColLB.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
- }
-
- if ( bKillTable )
- delete pColorTable;
- }
-
- SfxObjectShell* pShell;
- if ( SFX_ITEM_SET == rSet.GetItemState( SID_HTML_MODE, FALSE, &pItem )
- || ( 0 != ( pShell = SfxObjectShell::Current()) &&
- 0 != ( pItem = pShell->GetItem( SID_HTML_MODE ) ) ) )
- {
- USHORT nHtmlMode = ((SfxUInt16Item*)pItem)->GetValue();
- bHTMLMode = 0 != (nHtmlMode&HTMLMODE_ON);
- }
-
- BOOL bCharFmt = pActNum->IsFeatureSupported(NUM_CHAR_STYLE);
- aCharFmtFT.Show(bCharFmt);
- aCharFmtLB.Show(bCharFmt);
-
- BOOL bContinuous = pActNum->IsFeatureSupported(NUM_CONTINUOUS);
-
- BOOL bAllLevel = bContinuous && !bHTMLMode;
- aAllLevelFT.Show(bAllLevel);
- aAllLevelNF.Show(bAllLevel);
-
- aSameLevelFL.Show(bContinuous);
- aSameLevelCB.Show(bContinuous);
- //wieder Missbrauch: im Draw gibt es die Numerierung nur bis zum Bitmap
- // without SVX_NUM_NUMBER_NONE
- //remove types that are unsupported by Draw/Impress
- if(!bContinuous)
- {
- USHORT nFmtCount = aFmtLB.GetEntryCount();
- for(USHORT i = nFmtCount; i; i--)
- {
- USHORT nEntryData = (USHORT)(ULONG)aFmtLB.GetEntryData(i - 1);
- if(/*SVX_NUM_NUMBER_NONE == nEntryData ||*/
- ((SVX_NUM_BITMAP|LINK_TOKEN) == nEntryData))
- aFmtLB.RemoveEntry(i - 1);
- }
- }
- //one must be enabled
- if(!pActNum->IsFeatureSupported(NUM_ENABLE_LINKED_BMP))
- {
- long nData = SVX_NUM_BITMAP|LINK_TOKEN;
- USHORT nPos = aFmtLB.GetEntryPos((void*)nData);
- if(LISTBOX_ENTRY_NOTFOUND != nPos)
- aFmtLB.RemoveEntry(nPos);
- }
- else if(!pActNum->IsFeatureSupported(NUM_ENABLE_EMBEDDED_BMP))
- {
- long nData = SVX_NUM_BITMAP;
- USHORT nPos = aFmtLB.GetEntryPos((void*)nData);
- if(LISTBOX_ENTRY_NOTFOUND != nPos)
- aFmtLB.RemoveEntry(nPos);
- }
- if(pActNum->IsFeatureSupported(NUM_SYMBOL_ALIGNMENT))
- {
- aAlignFT.Show();
- aAlignLB.Show();
- Size aSz(aFormatFL.GetSizePixel());
- aSz.Height() = aLevelFT.GetSizePixel().Height();
- aFormatFL.SetSizePixel(aSz);
- aAlignLB.SetSelectHdl(LINK(this, SvxNumOptionsTabPage, EditModifyHdl_Impl));
- }
-
- //MegaHack: Aufgrund eines nicht fixbaren 'designfehlers' im Impress
- //Alle arten der numerischen Aufzaehlungen loeschen
- if(pActNum->IsFeatureSupported(NUM_NO_NUMBERS))
- {
- USHORT nFmtCount = aFmtLB.GetEntryCount();
- for(USHORT i = nFmtCount; i; i--)
- {
- USHORT nEntryData = (USHORT)(ULONG)aFmtLB.GetEntryData(i - 1);
- if( /*nEntryData >= SVX_NUM_CHARS_UPPER_LETTER &&*/ nEntryData <= SVX_NUM_NUMBER_NONE)
- aFmtLB.RemoveEntry(i - 1);
- }
- }
-
- InitControls();
- bModified = FALSE;
-
-}
-/*-----------------02.12.97 13:47-------------------
-
---------------------------------------------------*/
-void SvxNumOptionsTabPage::InitControls()
-{
- BOOL bShowBullet = TRUE;
- BOOL bShowBitmap = TRUE;
- BOOL bSameType = TRUE;
- BOOL bSameStart = TRUE;
- BOOL bSamePrefix = TRUE;
- BOOL bSameSuffix = TRUE;
- BOOL bAllLevel = TRUE;
- BOOL bSameCharFmt = TRUE;
- BOOL bSameVOrient = TRUE;
- BOOL bSameSize = TRUE;
- BOOL bSameBulColor = TRUE;
- BOOL bSameBulRelSize= TRUE;
- BOOL bSameAdjust = TRUE;
-
- const SvxNumberFormat* aNumFmtArr[SVX_MAX_NUM];
- String sFirstCharFmt;
- sal_Int16 eFirstOrient = text::VertOrientation::NONE;
- Size aFirstSize(0,0);
- USHORT nMask = 1;
- USHORT nLvl = USHRT_MAX;
- USHORT nHighestLevel = 0;
- String aEmptyStr;
-
- BOOL bBullColor = pActNum->IsFeatureSupported(NUM_BULLET_COLOR);
- BOOL bBullRelSize = pActNum->IsFeatureSupported(NUM_BULLET_REL_SIZE);
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- aNumFmtArr[i] = &pActNum->GetLevel(i);
- bShowBullet &= aNumFmtArr[i]->GetNumberingType() == SVX_NUM_CHAR_SPECIAL;
- bShowBitmap &= (aNumFmtArr[i]->GetNumberingType()&(~LINK_TOKEN)) == SVX_NUM_BITMAP;
- if(USHRT_MAX == nLvl)
- {
- nLvl = i;
- sFirstCharFmt = aNumFmtArr[i]->GetCharFmtName();
- eFirstOrient = aNumFmtArr[i]->GetVertOrient();
- if(bShowBitmap)
- aFirstSize = aNumFmtArr[i]->GetGraphicSize();
- }
- if( i > nLvl)
- {
- bSameType &= aNumFmtArr[i]->GetNumberingType() == aNumFmtArr[nLvl]->GetNumberingType();
- bSameStart = aNumFmtArr[i]->GetStart() == aNumFmtArr[nLvl]->GetStart();
-
- bSamePrefix = aNumFmtArr[i]->GetPrefix() == aNumFmtArr[nLvl]->GetPrefix();
- bSameSuffix = aNumFmtArr[i]->GetSuffix() == aNumFmtArr[nLvl]->GetSuffix();
- bAllLevel &= aNumFmtArr[i]->GetIncludeUpperLevels() == aNumFmtArr[nLvl]->GetIncludeUpperLevels();
- bSameCharFmt &= sFirstCharFmt == aNumFmtArr[i]->GetCharFmtName();
- bSameVOrient &= eFirstOrient == aNumFmtArr[i]->GetVertOrient();
- if(bShowBitmap && bSameSize)
- bSameSize &= aNumFmtArr[i]->GetGraphicSize() == aFirstSize;
- bSameBulColor &= aNumFmtArr[i]->GetBulletColor() == aNumFmtArr[nLvl]->GetBulletColor();
- bSameBulRelSize &= aNumFmtArr[i]->GetBulletRelSize() == aNumFmtArr[nLvl]->GetBulletRelSize();
- bSameAdjust &= aNumFmtArr[i]->GetNumAdjust() == aNumFmtArr[nLvl]->GetNumAdjust();
- }
- nHighestLevel = i;
- }
- else
- aNumFmtArr[i] = 0;
-
- nMask <<= 1 ;
-
- }
- SwitchNumberType(bShowBullet ? 1 : bShowBitmap ? 2 : 0);
- CheckForStartValue_Impl(aNumFmtArr[nLvl]->GetNumberingType());
- if(bShowBitmap)
- {
- if(!bSameVOrient || eFirstOrient == text::VertOrientation::NONE)
- aOrientLB.SetNoSelection();
- else
- aOrientLB.SelectEntryPos(
- sal::static_int_cast< USHORT >(eFirstOrient - 1));
- // kein text::VertOrientation::NONE
-
- if(bSameSize)
- {
- SetMetricValue(aHeightMF, aFirstSize.Height(), eCoreUnit);
- SetMetricValue(aWidthMF, aFirstSize.Width(), eCoreUnit);
- }
- else
- {
- aHeightMF.SetText(aEmptyStr);
- aWidthMF.SetText(aEmptyStr);
- }
- }
-
- if(bSameType)
- {
- USHORT nLBData = (USHORT) aNumFmtArr[nLvl]->GetNumberingType();
- aFmtLB.SelectEntryPos(aFmtLB.GetEntryPos( (void*)sal::static_int_cast<sal_uIntPtr>( nLBData ) ));
- }
- else
- aFmtLB.SetNoSelection();
-
- aAllLevelNF.Enable(nHighestLevel > 0 && !aSameLevelCB.IsChecked());
- aAllLevelNF.SetMax(nHighestLevel + 1);
- if(bAllLevel)
- {
- aAllLevelNF.SetValue(aNumFmtArr[nLvl]->GetIncludeUpperLevels());
- }
- else
- {
- aAllLevelNF.SetText(aEmptyStr);
- }
- if(bSameAdjust)
- {
- USHORT nPos = 1; // zentriert
- if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_LEFT)
- nPos = 0;
- else if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_RIGHT)
- nPos = 2;
- aAlignLB.SelectEntryPos(nPos);
- }
- else
- {
- aAlignLB.SetNoSelection();
- }
-
- if(bBullRelSize)
- {
- if(bSameBulRelSize)
- aBulRelSizeMF.SetValue(aNumFmtArr[nLvl]->GetBulletRelSize());
- else
- aBulRelSizeMF.SetText(aEmptyStr);
- }
- if(bBullColor)
- {
- if(bSameBulColor)
- aBulColLB.SelectEntry(aNumFmtArr[nLvl]->GetBulletColor());
- else
- aBulColLB.SetNoSelection();
- }
- switch(nBullet)
- {
- case SHOW_NUMBERING:
- if(bSameStart)
- {
- aStartED.SetValue(aNumFmtArr[nLvl]->GetStart());
- }
- else
- aStartED.SetText(aEmptyStr);
- break;
- case SHOW_BULLET:
- {
-// const Font* pFnt = aNumFmtArr[Lvl]->GetBulletFont();
-// if(pFnt)
-// ChgTxtFont(aBulletFT, *pFnt);
-// aBulletFT.SetText(String((char)aNumFmtArr[nLvl]->GetBulletChar()));
- }
- break;
- case SHOW_BITMAP:
- break;
- }
-
- if(bSamePrefix)
- aPrefixED.SetText(aNumFmtArr[nLvl]->GetPrefix());
- else
- aPrefixED.SetText(aEmptyStr);
- if(bSameSuffix)
- aSuffixED.SetText(aNumFmtArr[nLvl]->GetSuffix());
- else
- aSuffixED.SetText(aEmptyStr);
-
- if(bSameCharFmt)
- {
- if(sFirstCharFmt.Len())
- aCharFmtLB.SelectEntry(sFirstCharFmt);
- else
- aCharFmtLB.SelectEntryPos( 0 );
- }
- else
- aCharFmtLB.SetNoSelection();
-
- pPreviewWIN->SetLevel(nActNumLvl);
- pPreviewWIN->Invalidate();
-}
-
-/*-----------------02.12.97 14:01-------------------
- 0 - Nummer; 1 - Bullet; 2 - Bitmap
---------------------------------------------------*/
-
-void SvxNumOptionsTabPage::SwitchNumberType( BYTE nType, BOOL )
-{
- if(nBullet == nType)
- return;
- nBullet = nType;
- BOOL bBitmap = FALSE;
- BOOL bBullet = FALSE;
- BOOL bEnableBitmap = FALSE;
- if(nType == SHOW_NUMBERING)
- {
- // Label umschalten, alten Text merken
- aStartFT.SetText(sStartWith);
-
- }
- else if(nType == SHOW_BULLET)
- {
- // Label umschalten, alten Text merken
- aStartFT.SetText(sBullet);
- bBullet = TRUE;
- }
- else
- {
- bBitmap = TRUE;
- bEnableBitmap = TRUE;
- }
- BOOL bNumeric = !(bBitmap||bBullet);
- aPrefixFT.Show(bNumeric);
- aPrefixED.Show(bNumeric);
- aSuffixFT.Show(bNumeric);
- aSuffixED.Show(bNumeric);
-
- BOOL bCharFmt = pActNum->IsFeatureSupported(NUM_CHAR_STYLE);
- aCharFmtFT.Show(!bBitmap && bCharFmt);
- aCharFmtLB.Show(!bBitmap && bCharFmt);
-
- // das ist eigentlich Missbrauch, da fuer die vollst. Numerierung kein
- // eigenes Flag existiert
- BOOL bAllLevelFeature = pActNum->IsFeatureSupported(NUM_CONTINUOUS);
- BOOL bAllLevel = bNumeric && bAllLevelFeature && !bHTMLMode;
- aAllLevelFT.Show(bAllLevel);
- aAllLevelNF.Show(bAllLevel);
-
- aStartFT.Show(!bBitmap);
- aStartED.Show(!(bBullet||bBitmap));
-
- aBulletPB.Show(bBullet);
- BOOL bBullColor = pActNum->IsFeatureSupported(NUM_BULLET_COLOR);
- aBulColorFT.Show( !bBitmap && bBullColor );
- aBulColLB.Show( !bBitmap && bBullColor );
- BOOL bBullResSize = pActNum->IsFeatureSupported(NUM_BULLET_REL_SIZE);
- aBulRelSizeFT.Show( !bBitmap && bBullResSize );
- aBulRelSizeMF.Show( !bBitmap && bBullResSize );
-
- aBitmapFT .Show(bBitmap);
- aBitmapMB .Show(bBitmap);
-
- aSizeFT .Show(bBitmap);
- aWidthMF .Show(bBitmap);
- aMultFT .Show(bBitmap);
- aHeightMF .Show(bBitmap);
- aRatioCB .Show(bBitmap);
-
- aOrientFT .Show(bBitmap && bAllLevelFeature);
- aOrientLB .Show(bBitmap && bAllLevelFeature);
-
- aSizeFT .Enable(bEnableBitmap);
- aWidthMF .Enable(bEnableBitmap);
- aMultFT .Enable(bEnableBitmap);
- aHeightMF .Enable(bEnableBitmap);
- aRatioCB .Enable(bEnableBitmap);
- aOrientFT .Enable(bEnableBitmap);
- aOrientLB .Enable(bEnableBitmap);
-
-}
-/*-----------------02.12.97 13:51-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, LevelHdl_Impl, ListBox *, pBox )
-{
- USHORT nSaveNumLvl = nActNumLvl;
- nActNumLvl = 0;
- if(pBox->IsEntryPosSelected( pActNum->GetLevelCount() ) &&
- (pBox->GetSelectEntryCount() == 1 || nSaveNumLvl != 0xffff))
- {
- nActNumLvl = 0xFFFF;
- pBox->SetUpdateMode(FALSE);
- for( USHORT i = 0; i < pActNum->GetLevelCount(); i++ )
- pBox->SelectEntryPos( i, FALSE );
- pBox->SetUpdateMode(TRUE);
- }
- else if(pBox->GetSelectEntryCount())
- {
- USHORT nMask = 1;
- for( USHORT i = 0; i < pActNum->GetLevelCount(); i++ )
- {
- if(pBox->IsEntryPosSelected( i ))
- nActNumLvl |= nMask;
- nMask <<= 1;
- }
- pBox->SelectEntryPos( pActNum->GetLevelCount(), FALSE );
- }
- else
- {
- nActNumLvl = nSaveNumLvl;
- USHORT nMask = 1;
- for( USHORT i = 0; i < pActNum->GetLevelCount(); i++ )
- {
- if(nActNumLvl & nMask)
- {
- pBox->SelectEntryPos(i);
- break;
- }
- nMask <<=1;
- }
- }
- InitControls();
- return 0;
-}
-/* -----------------------------05.04.2002 15:30------------------------------
-
- ---------------------------------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, PreviewInvalidateHdl_Impl, Timer*, EMPTYARG )
-{
- pPreviewWIN->Invalidate();
- return 0;
-}
-/*-----------------03.12.97 12:01-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, AllLevelHdl_Impl, NumericField*, pBox )
-{
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- USHORT nMask = 1;
- for(USHORT e = 0; e < pActNum->GetLevelCount(); e++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(e));
- aNumFmt.SetIncludeUpperLevels((BYTE) std::min(pBox->GetValue(), sal_Int64(e + 1)) );
- pActNum->SetLevel(e, aNumFmt);
- }
- nMask <<= 1;
- }
- }
- SetModified();
- return 0;
-}
-
-/*-----------------02.12.97 08:56-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, NumberTypeSelectHdl_Impl, ListBox *, pBox )
-{
- String sSelectStyle;
- sal_Int16 eOldType;
- BOOL bShowOrient = FALSE;
- BOOL bBmp = FALSE;
- String aEmptyStr;
- USHORT nMask = 1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(i));
- eOldType = aNumFmt.GetNumberingType();
- // PAGEDESC gibt es nicht
- USHORT nNumType = (USHORT)(ULONG)pBox->GetEntryData(pBox->GetSelectEntryPos());
- aNumFmt.SetNumberingType((sal_Int16)nNumType);
- sal_uInt16 nNumberingType = aNumFmt.GetNumberingType();
- if(SVX_NUM_BITMAP == (nNumberingType&(~LINK_TOKEN)))
- {
- bBmp |= 0 != aNumFmt.GetBrush();
- aNumFmt.SetIncludeUpperLevels( FALSE );
- aNumFmt.SetSuffix( aEmptyStr );
- aNumFmt.SetPrefix( aEmptyStr );
- if(!bBmp)
- aNumFmt.SetGraphic(aEmptyStr);
- pActNum->SetLevel(i, aNumFmt);
- SwitchNumberType(SHOW_BITMAP, bBmp );
- bShowOrient = TRUE;
- }
- else if( SVX_NUM_CHAR_SPECIAL == nNumberingType )
- {
- aNumFmt.SetIncludeUpperLevels( FALSE );
- aNumFmt.SetSuffix( aEmptyStr );
- aNumFmt.SetPrefix( aEmptyStr );
- if( !aNumFmt.GetBulletFont() )
- aNumFmt.SetBulletFont(&aActBulletFont);
- if( !aNumFmt.GetBulletChar() )
- aNumFmt.SetBulletChar( SVX_DEF_BULLET );
- pActNum->SetLevel(i, aNumFmt);
- SwitchNumberType(SHOW_BULLET);
- //ChgTxtFont(aBulletFT, *aNumFmt.GetBulletFont());
- //aBulletFT.SetText( aNumFmt.GetBulletChar() );
- // Zuweisung der Zeichenvorlage automatisch
- if(bAutomaticCharStyles)
- {
- sSelectStyle = sBulletCharFmtName;
- }
- }
- else
- {
- aNumFmt.SetPrefix( aPrefixED.GetText() );
- aNumFmt.SetSuffix( aSuffixED.GetText() );
-// aNumFmt.SetBulletFont(0);
- SwitchNumberType(SHOW_NUMBERING);
- pActNum->SetLevel(i, aNumFmt);
- CheckForStartValue_Impl(nNumberingType);
-
- // Zuweisung der Zeichenvorlage automatisch
- if(bAutomaticCharStyles)
- {
- sSelectStyle = sNumCharFmtName;
- }
- }
- }
- nMask <<= 1;
- }
- BOOL bAllLevelFeature = pActNum->IsFeatureSupported(NUM_CONTINUOUS);
- if(bShowOrient && bAllLevelFeature)
- {
- aOrientFT.Show();
- aOrientLB.Show();
- }
- else
- {
- aOrientFT.Hide();
- aOrientLB.Hide();
- }
- SetModified();
- if(sSelectStyle.Len())
- {
- aCharFmtLB.SelectEntry(sSelectStyle);
- CharFmtHdl_Impl(&aCharFmtLB);
- // bAutomaticCharStyles wird im CharFmtHdl_Impl zurueckgesetzt
- bAutomaticCharStyles = TRUE;
- }
- return 0;
-}
-/* -----------------06.11.2002 14:27-----------------
- *
- * --------------------------------------------------*/
-void SvxNumOptionsTabPage::CheckForStartValue_Impl(sal_uInt16 nNumberingType)
-{
- BOOL bIsNull = aStartED.GetValue() == 0;
- BOOL bNoZeroAllowed = nNumberingType < SVX_NUM_ARABIC ||
- SVX_NUM_CHARS_UPPER_LETTER_N == nNumberingType ||
- SVX_NUM_CHARS_LOWER_LETTER_N == nNumberingType;
- aStartED.SetMin(bNoZeroAllowed ? 1 : 0);
- if(bIsNull && bNoZeroAllowed)
- aStartED.GetModifyHdl().Call(&aStartED);
-}
-/*-----------------03.12.97 16:43-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, OrientHdl_Impl, ListBox *, pBox )
-{
- USHORT nPos = pBox->GetSelectEntryPos();
- nPos ++; // kein VERT_NONE
-
- USHORT nMask = 1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(i));
- if(SVX_NUM_BITMAP == (aNumFmt.GetNumberingType()&(~LINK_TOKEN)))
- {
- const SvxBrushItem* pBrushItem = aNumFmt.GetBrush();
- const Size& rSize = aNumFmt.GetGraphicSize();
- sal_Int16 eOrient = (sal_Int16)nPos;
- aNumFmt.SetGraphicBrush( pBrushItem, &rSize, &eOrient );
- pActNum->SetLevel(i, aNumFmt);
- }
- }
- nMask <<= 1;
- }
- SetModified(FALSE);
- return 0;
-
-}
-
-/*-----------------06.12.97 12:00-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, SameLevelHdl_Impl, CheckBox *, pBox )
-{
- BOOL bSet = pBox->IsChecked();
- pActNum->SetContinuousNumbering(bSet);
- BOOL bRepaint = FALSE;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(i));
- if(aNumFmt.GetNumberingType() != SVX_NUM_NUMBER_NONE)
- {
- bRepaint = TRUE;
- break;
- }
- }
- SetModified(bRepaint);
- InitControls();
- return 0;
-}
-/* -----------------16.11.98 14:20-------------------
- *
- * --------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, BulColorHdl_Impl, ColorListBox*, pBox )
-{
- Color nSetColor = pBox->GetSelectEntryColor();
-
- USHORT nMask = 1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(i));
- aNumFmt.SetBulletColor(nSetColor);
- pActNum->SetLevel(i, aNumFmt);
- }
- nMask <<= 1;
- }
- SetModified();
- return 0;
-}
-/* -----------------16.11.98 14:20-------------------
- *
- * --------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, BulRelSizeHdl_Impl, MetricField *, pField)
-{
- USHORT nRelSize = (USHORT)pField->GetValue();
-
- USHORT nMask = 1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(i));
- aNumFmt.SetBulletRelSize(nRelSize);
- pActNum->SetLevel(i, aNumFmt);
- }
- nMask <<= 1;
- }
- SetModified();
- return 0;
-}
-
-/*-----------------02.12.97 10:50-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, GraphicHdl_Impl, MenuButton *, pButton )
-{
- USHORT nItemId = pButton->GetCurItemId();
- String aGrfName;
- Size aSize;
- sal_Bool bSucc(sal_False);
- SvxOpenGraphicDialog aGrfDlg( SVX_RES(RID_STR_EDIT_GRAPHIC) );
-// aGrfDlg.SetDialogHelpId( HID_NUMBERINGOPT_SEL_GRF_FROM_FILE );
-
- if(MN_GALLERY_ENTRY <= nItemId )
- {
- aGrfName = *((String*)aGrfNames.GetObject( nItemId - MN_GALLERY_ENTRY));
- Graphic aGraphic;
- if(GalleryExplorer::GetGraphicObj( GALLERY_THEME_BULLETS, nItemId - MN_GALLERY_ENTRY, &aGraphic))
- {
- aSize = SvxNumberFormat::GetGraphicSizeMM100(&aGraphic);
- bSucc = sal_True;
- }
- }
- else
- {
- aGrfDlg.EnableLink( sal_False );
- aGrfDlg.AsLink( sal_False );
- if ( !aGrfDlg.Execute() )
- {
- // ausgewaehlten Filter merken
- aGrfName = aGrfDlg.GetPath();
-
- Graphic aGraphic;
- if( !aGrfDlg.GetGraphic(aGraphic) )
- {
- aSize = SvxNumberFormat::GetGraphicSizeMM100(&aGraphic);
- bSucc = sal_True;
- }
- }
- }
- if(bSucc)
- {
- aSize = OutputDevice::LogicToLogic(aSize, MAP_100TH_MM, (MapUnit)eCoreUnit);
-
- USHORT nMask = 1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(i));
- aNumFmt.SetCharFmtName(sNumCharFmtName);
- aNumFmt.SetGraphic(aGrfName);
-
- // Size schon mal fuer spaeteren Groessenabgleich setzen
- const SvxBrushItem* pBrushItem = aNumFmt.GetBrush();
- // initiate asynchronous loading
- sal_Int16 eOrient = aNumFmt.GetVertOrient();
- aNumFmt.SetGraphicBrush( pBrushItem, &aSize, &eOrient );
- aInitSize[i] = aNumFmt.GetGraphicSize();
-
- pActNum->SetLevel(i, aNumFmt);
- }
- nMask <<= 1;
- }
- aRatioCB .Enable();
- aSizeFT .Enable();
- aMultFT.Enable();
- aWidthMF .Enable();
- aHeightMF.Enable();
- SetMetricValue(aWidthMF, aSize.Width(), eCoreUnit);
- SetMetricValue(aHeightMF, aSize.Height(), eCoreUnit);
- aOrientFT.Enable();
- aOrientLB.Enable();
- SetModified();
- //needed due to asynchronous loading of graphics in the SvxBrushItem
- aInvalidateTimer.Start();
- }
- return 0;
-}
-/* -----------------27.07.99 12:20-------------------
-
- --------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, PopupActivateHdl_Impl, Menu *, EMPTYARG )
-{
- if(!bMenuButtonInitialized)
- {
- bMenuButtonInitialized = TRUE;
- EnterWait();
- PopupMenu* pPopup = aBitmapMB.GetPopupMenu()->GetPopupMenu( MN_GALLERY );
- GalleryExplorer::FillObjList(GALLERY_THEME_BULLETS, aGrfNames);
- if(aGrfNames.Count())
- {
- pPopup->RemoveItem( pPopup->GetItemPos( NUM_NO_GRAPHIC ));
- String aEmptyStr;
- GalleryExplorer::BeginLocking(GALLERY_THEME_BULLETS);
-
- for(USHORT i = 0; i < aGrfNames.Count(); i++)
- {
- Graphic aGraphic;
- String sGrfName = *(const String*)aGrfNames.GetObject(i);
- INetURLObject aObj(sGrfName);
- if(aObj.GetProtocol() == INET_PROT_FILE)
- sGrfName = aObj.PathToFileName();
- if(GalleryExplorer::GetGraphicObj( GALLERY_THEME_BULLETS, i, &aGraphic))
- {
- Bitmap aBitmap(aGraphic.GetBitmap());
- Size aSize(aBitmap.GetSizePixel());
- if(aSize.Width() > MAX_BMP_WIDTH ||
- aSize.Height() > MAX_BMP_HEIGHT)
- {
- BOOL bWidth = aSize.Width() > aSize.Height();
- double nScale = bWidth ?
- (double)MAX_BMP_WIDTH / (double)aSize.Width():
- (double)MAX_BMP_HEIGHT / (double)aSize.Height();
- aBitmap.Scale(nScale, nScale);
- }
- Image aImage(aBitmap);
-
- pPopup->InsertItem(MN_GALLERY_ENTRY + i, sGrfName, aImage );
- }
- else
- {
- Image aImage;
- pPopup->InsertItem(
- MN_GALLERY_ENTRY + i, sGrfName, aImage );
- }
- }
- GalleryExplorer::EndLocking(GALLERY_THEME_BULLETS);
- }
- LeaveWait();
- }
- return 0;
-}
-
-/*-----------------02.12.97 10:58-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, BulletHdl_Impl, Button *, EMPTYARG )
-{
- SvxCharacterMap* pMap = new SvxCharacterMap( this, TRUE );
-
- USHORT nMask = 1;
- const Font* pFmtFont = 0;
- BOOL bSameBullet = TRUE;
- sal_Unicode cBullet = 0;
- BOOL bFirst = TRUE;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- const SvxNumberFormat& rCurFmt = pActNum->GetLevel(i);
- if(bFirst)
- {
- cBullet = rCurFmt.GetBulletChar();
- }
- else if(rCurFmt.GetBulletChar() != cBullet )
- {
- bSameBullet = FALSE;
- break;
- }
- if(!pFmtFont)
- pFmtFont = rCurFmt.GetBulletFont();
- bFirst = FALSE;
- }
- nMask <<= 1;
-
- }
-
- if(pFmtFont)
- pMap->SetCharFont(*pFmtFont);
- else
- pMap->SetCharFont(aActBulletFont);
- if(bSameBullet)
- pMap->SetChar( cBullet );
- if(pMap->Execute() == RET_OK)
- {
- // Font Numrules umstellen
- aActBulletFont = pMap->GetCharFont();
-
- USHORT _nMask = 1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & _nMask)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(i));
- aNumFmt.SetBulletFont(&aActBulletFont); ;
- aNumFmt.SetBulletChar( (sal_Unicode) pMap->GetChar() );
- pActNum->SetLevel(i, aNumFmt);
- }
- _nMask <<= 1;
- }
-
- SetModified();
- }
- delete pMap;
- return 0;
-}
-
-/*-----------------03.03.97 15:21-------------------
-
---------------------------------------------------*/
-
-IMPL_LINK( SvxNumOptionsTabPage, SizeHdl_Impl, MetricField *, pField)
-{
- BOOL bWidth = pField == &aWidthMF;
- bLastWidthModified = bWidth;
- BOOL bRatio = aRatioCB.IsChecked();
- long nWidthVal = static_cast<long>(aWidthMF.Denormalize(aWidthMF.GetValue(FUNIT_100TH_MM)));
- long nHeightVal = static_cast<long>(aHeightMF.Denormalize(aHeightMF.GetValue(FUNIT_100TH_MM)));
- nWidthVal = OutputDevice::LogicToLogic( nWidthVal ,
- MAP_100TH_MM, (MapUnit)eCoreUnit );
- nHeightVal = OutputDevice::LogicToLogic( nHeightVal,
- MAP_100TH_MM, (MapUnit)eCoreUnit);
- double fSizeRatio;
-
- BOOL bRepaint = FALSE;
- USHORT nMask = 1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(i));
- if(SVX_NUM_BITMAP == (aNumFmt.GetNumberingType()&(~LINK_TOKEN)))
- {
- Size aSize(aNumFmt.GetGraphicSize() );
- Size aSaveSize(aSize);
-
- if (aInitSize[i].Height())
- fSizeRatio = (double)aInitSize[i].Width() / (double)aInitSize[i].Height();
- else
- fSizeRatio = (double)1;
-
- if(bWidth)
- {
- long nDelta = nWidthVal - aInitSize[i].Width();
- aSize.Width() = nWidthVal;
- if (bRatio)
- {
- aSize.Height() = aInitSize[i].Height() + (long)((double)nDelta / fSizeRatio);
- aHeightMF.SetUserValue(aHeightMF.Normalize(
- OutputDevice::LogicToLogic( aSize.Height(), (MapUnit)eCoreUnit, MAP_100TH_MM )),
- FUNIT_100TH_MM);
- }
- }
- else
- {
- long nDelta = nHeightVal - aInitSize[i].Height();
- aSize.Height() = nHeightVal;
- if (bRatio)
- {
- aSize.Width() = aInitSize[i].Width() + (long)((double)nDelta * fSizeRatio);
- aWidthMF.SetUserValue(aWidthMF.Normalize(
- OutputDevice::LogicToLogic( aSize.Width(), (MapUnit)eCoreUnit, MAP_100TH_MM )),
- FUNIT_100TH_MM);
- }
- }
- const SvxBrushItem* pBrushItem = aNumFmt.GetBrush();
- sal_Int16 eOrient = aNumFmt.GetVertOrient();
- if(aSize != aSaveSize)
- bRepaint = TRUE;
- aNumFmt.SetGraphicBrush( pBrushItem, &aSize, &eOrient );
- pActNum->SetLevel(i, aNumFmt);
- }
- }
- nMask <<= 1;
- }
- SetModified(bRepaint);
- return 0;
-}
-
-/*------------------------------------------------------------------------
- Beschreibung:
-------------------------------------------------------------------------*/
-
-IMPL_LINK( SvxNumOptionsTabPage, RatioHdl_Impl, CheckBox *, pBox )
-{
- if (pBox->IsChecked())
- {
- if (bLastWidthModified)
- SizeHdl_Impl(&aWidthMF);
- else
- SizeHdl_Impl(&aHeightMF);
- }
- return 0;
-}
-
-/*-----------------02.12.97 16:07-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, CharFmtHdl_Impl, ListBox *, EMPTYARG )
-{
- bAutomaticCharStyles = FALSE;
- USHORT nEntryPos = aCharFmtLB.GetSelectEntryPos();
- String sEntry = aCharFmtLB.GetSelectEntry();
- USHORT nMask = 1;
- String aEmptyStr;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(i));
- if( 0 == nEntryPos )
- aNumFmt.SetCharFmtName(aEmptyStr);
- else
- {
- if(SVX_NUM_BITMAP != (aNumFmt.GetNumberingType()&(~LINK_TOKEN)))
- aNumFmt.SetCharFmtName(sEntry);
- }
- pActNum->SetLevel(i, aNumFmt);
- }
- nMask <<= 1;
- }
- SetModified(FALSE);
- return 0;
-
-};
-
-/*-----------------03.12.97 11:01-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumOptionsTabPage, EditModifyHdl_Impl, Edit *, pEdit )
-{
- BOOL bPrefix = pEdit == &aPrefixED;
- BOOL bSuffix = pEdit == &aSuffixED;
- BOOL bStart = pEdit == &aStartED;
- USHORT nMask = 1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(i));
- if(bPrefix)
- aNumFmt.SetPrefix( aPrefixED.GetText() );
- else if(bSuffix)
- aNumFmt.SetSuffix( aSuffixED.GetText() );
- else if(bStart)
- aNumFmt.SetStart( (USHORT)aStartED.GetValue() );
- else //align
- {
- USHORT nPos = aAlignLB.GetSelectEntryPos();
- SvxAdjust eAdjust = SVX_ADJUST_CENTER;
- if(nPos == 0)
- eAdjust = SVX_ADJUST_LEFT;
- else if(nPos == 2)
- eAdjust = SVX_ADJUST_RIGHT;
- aNumFmt.SetNumAdjust( eAdjust );
- }
- pActNum->SetLevel(i, aNumFmt);
- }
- nMask <<= 1;
- }
- SetModified();
-
- return 0;
-}
-
-/*-----------------09.12.97 11:49-------------------
-
---------------------------------------------------*/
-USHORT lcl_DrawGraphic(VirtualDevice* pVDev, const SvxNumberFormat &rFmt, USHORT nXStart,
- USHORT nYStart, USHORT nDivision)
-{
- const SvxBrushItem* pBrushItem = rFmt.GetBrush();
- USHORT nRet = 0;
- if(pBrushItem)
- {
- const Graphic* pGrf = pBrushItem->GetGraphic();
- if(pGrf)
- {
- Size aGSize( rFmt.GetGraphicSize() );
- aGSize.Width() /= nDivision;
- nRet = (USHORT)aGSize.Width();
- aGSize.Height() /= nDivision;
- pGrf->Draw( pVDev, Point(nXStart,nYStart),
- pVDev->PixelToLogic( aGSize ) );
- }
- }
- return nRet;
-
-}
-
-/*-----------------09.12.97 11:54-------------------
-
---------------------------------------------------*/
-USHORT lcl_DrawBullet(VirtualDevice* pVDev,
- const SvxNumberFormat& rFmt, USHORT nXStart,
- USHORT nYStart, const Size& rSize)
-{
- Font aTmpFont(pVDev->GetFont());
-
- //per Uno kann es sein, dass kein Font gesetzt ist!
- Font aFont(rFmt.GetBulletFont() ? *rFmt.GetBulletFont() : aTmpFont);
- Size aTmpSize(rSize);
- aTmpSize.Width() *= rFmt.GetBulletRelSize();
- aTmpSize.Width() /= 100 ;
- aTmpSize.Height() *= rFmt.GetBulletRelSize();
- aTmpSize.Height() /= 100 ;
- // bei einer Hoehe von Null wird in Ursprungshoehe gezeichnet
- if(!aTmpSize.Height())
- aTmpSize.Height() = 1;
- aFont.SetSize(aTmpSize);
- aFont.SetTransparent(TRUE);
- Color aBulletColor = rFmt.GetBulletColor();
- if(aBulletColor.GetColor() == COL_AUTO)
- aBulletColor = Color(pVDev->GetFillColor().IsDark() ? COL_WHITE : COL_BLACK);
- else if(aBulletColor == pVDev->GetFillColor())
- aBulletColor.Invert();
- aFont.SetColor(aBulletColor);
- pVDev->SetFont( aFont );
- String aText(sal_Unicode(rFmt.GetBulletChar()));
- long nY = nYStart;
- nY -= ((aTmpSize.Height() - rSize.Height())/ 2);
- pVDev->DrawText( Point(nXStart, nY), aText );
- USHORT nRet = (USHORT)pVDev->GetTextWidth(aText);
-
- pVDev->SetFont(aTmpFont);
- return nRet;
-}
-/*-----------------02.12.97 10:34-------------------
- Vorschau der Numerierung painten
---------------------------------------------------*/
-void SvxNumberingPreview::Paint( const Rectangle& /*rRect*/ )
-{
- Size aSize(PixelToLogic(GetOutputSizePixel()));
- Rectangle aRect(Point(0,0), aSize);
-
- const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
- const Color aBackColor = rStyleSettings.GetFieldColor();
- const Color aTextColor = rStyleSettings.GetFieldTextColor();
-
- VirtualDevice* pVDev = new VirtualDevice(*this);
- pVDev->EnableRTL( IsRTLEnabled() );
- pVDev->SetMapMode(GetMapMode());
- pVDev->SetOutputSize( aSize );
-
- Color aLineColor(COL_LIGHTGRAY);
- if(aLineColor == aBackColor)
- aLineColor.Invert();
- pVDev->SetLineColor(aLineColor);
- pVDev->SetFillColor( aBackColor );
- pVDev->DrawRect(aRect);
-
- if(pActNum)
- {
- USHORT nWidthRelation;
- if(nPageWidth)
- {
- nWidthRelation = USHORT (nPageWidth / aSize.Width());
- if(bPosition)
- nWidthRelation = nWidthRelation * 2 / 3;
- else
- nWidthRelation = nWidthRelation / 4;
- }
- else
- nWidthRelation = 30; // Kapiteldialog
-
- //Hoehe pro Ebene
- USHORT nXStep = sal::static_int_cast< USHORT >(aSize.Width() / (3 * pActNum->GetLevelCount()));
- if(pActNum->GetLevelCount() < 10)
- nXStep /= 2;
- USHORT nYStart = 4;
- // fuer ein einziges Level darf nicht die gesamte Hoehe benutzt werden
- USHORT nYStep = sal::static_int_cast< USHORT >((aSize.Height() - 6)/ (pActNum->GetLevelCount() > 1 ? pActNum->GetLevelCount() : 5));
- aStdFont = OutputDevice::GetDefaultFont(
- DEFAULTFONT_UI_SANS, MsLangId::getSystemLanguage(), DEFAULTFONT_FLAGS_ONLYONE);
- aStdFont.SetColor(aTextColor);
- aStdFont.SetFillColor(aBackColor);
-
- //
- USHORT nFontHeight = nYStep * 6 / 10;
- if(bPosition)
- nFontHeight = nYStep * 15 / 10;
- aStdFont.SetSize(Size( 0, nFontHeight ));
-
- SvxNodeNum aNum( (BYTE)0 );
- USHORT nPreNum = pActNum->GetLevel(0).GetStart();
-
- if(bPosition)
- {
- USHORT nLineHeight = nFontHeight * 8 / 7;
- BYTE nStart = 0;
- while( !(nActLevel & (1<<nStart)) )
- {
- nStart++;
- }
- if(nStart)
- nStart--;
- BYTE nEnd = std::min( (BYTE)(nStart + 3), (BYTE)pActNum->GetLevelCount() );
- for( BYTE nLevel = nStart; nLevel < nEnd; ++nLevel )
- {
- const SvxNumberFormat &rFmt = pActNum->GetLevel(nLevel);
- aNum.GetLevelVal()[ nLevel ] = rFmt.GetStart();
-
- // --> OD 2008-01-16 #newlistlevelattrs#
- USHORT nXStart( 0 );
- short nTextOffset( 0 );
- USHORT nNumberXPos( 0 );
- if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
- {
- nXStart = rFmt.GetAbsLSpace() / nWidthRelation;
- nTextOffset = rFmt.GetCharTextDistance() / nWidthRelation;
- nNumberXPos = nXStart;
- USHORT nFirstLineOffset = (-rFmt.GetFirstLineOffset()) / nWidthRelation;
-
- if(nFirstLineOffset <= nNumberXPos)
- nNumberXPos = nNumberXPos - nFirstLineOffset;
- else
- nNumberXPos = 0;
- //im draw ist das zulaeesig
- if(nTextOffset < 0)
- nNumberXPos = nNumberXPos + nTextOffset;
- }
- else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
- {
- const long nTmpNumberXPos( ( rFmt.GetIndentAt() +
- rFmt.GetFirstLineIndent() ) /
- nWidthRelation );
- if ( nTmpNumberXPos < 0 )
- {
- nNumberXPos = 0;
- }
- else
- {
- nNumberXPos = static_cast<USHORT>( nTmpNumberXPos );
- }
- }
- // <--
-
- USHORT nBulletWidth = 0;
- if( SVX_NUM_BITMAP == (rFmt.GetNumberingType() &(~LINK_TOKEN)))
- {
- nBulletWidth = rFmt.IsShowSymbol() ? lcl_DrawGraphic(pVDev, rFmt,
- nNumberXPos,
- nYStart, nWidthRelation) : 0;
- }
- else if( SVX_NUM_CHAR_SPECIAL == rFmt.GetNumberingType() )
- {
- nBulletWidth = rFmt.IsShowSymbol() ?
- lcl_DrawBullet(pVDev, rFmt, nNumberXPos, nYStart, aStdFont.GetSize()) : 0;
- }
- else
- {
- pVDev->SetFont(aStdFont);
- aNum.SetLevel( nLevel );
- if(pActNum->IsContinuousNumbering())
- aNum.GetLevelVal()[nLevel] = nPreNum;
- String aText(pActNum->MakeNumString( aNum ));
- Font aSaveFont = pVDev->GetFont();
- Font aColorFont(aSaveFont);
- Color aTmpBulletColor = rFmt.GetBulletColor();
- if(aTmpBulletColor.GetColor() == COL_AUTO)
- aTmpBulletColor = Color(aBackColor.IsDark() ? COL_WHITE : COL_BLACK);
- else if(aTmpBulletColor == aBackColor)
- aTmpBulletColor.Invert();
- aColorFont.SetColor(aTmpBulletColor);
- pVDev->SetFont(aColorFont);
- pVDev->DrawText( Point(nNumberXPos, nYStart), aText );
- pVDev->SetFont(aSaveFont);
- nBulletWidth = (USHORT)pVDev->GetTextWidth(aText);
- nPreNum++;
- }
- // --> OD 2008-01-16 #newlistlevelattrs#
- if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT &&
- rFmt.GetLabelFollowedBy() == SvxNumberFormat::SPACE )
- {
- pVDev->SetFont(aStdFont);
- String aText(' ');
- pVDev->DrawText( Point(nNumberXPos, nYStart), aText );
- nBulletWidth = nBulletWidth + (USHORT)pVDev->GetTextWidth(aText);
- }
-
- // --> OD 2008-01-16 #newlistlevelattrs#
- USHORT nTextXPos( 0 );
- if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
- {
- nTextXPos = nXStart;
- if(nTextOffset < 0)
- nTextXPos = nTextXPos + nTextOffset;
- if(nNumberXPos + nBulletWidth + nTextOffset > nTextXPos )
- nTextXPos = nNumberXPos + nBulletWidth + nTextOffset;
- }
- else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
- {
- switch ( rFmt.GetLabelFollowedBy() )
- {
- case SvxNumberFormat::LISTTAB:
- {
- nTextXPos = static_cast<USHORT>(
- rFmt.GetListtabPos() / nWidthRelation );
- if ( nTextXPos < nNumberXPos + nBulletWidth )
- {
- nTextXPos = nNumberXPos + nBulletWidth;
- }
- }
- break;
- case SvxNumberFormat::SPACE:
- case SvxNumberFormat::NOTHING:
- {
- nTextXPos = nNumberXPos + nBulletWidth;
- }
- break;
- }
-
- nXStart = static_cast<USHORT>( rFmt.GetIndentAt() / nWidthRelation );
- }
- // <--
-
- Rectangle aRect1(Point(nTextXPos, nYStart + nFontHeight / 2), Size(aSize.Width() / 2, 2));
- pVDev->SetFillColor( aBackColor );
- pVDev->DrawRect( aRect1 );
-
- Rectangle aRect2(Point(nXStart, nYStart + nLineHeight + nFontHeight / 2 ), Size(aSize.Width() / 2, 2));
- pVDev->DrawRect( aRect2 );
- nYStart += 2 * nLineHeight;
- }
- }
- else
- {
- //#i5153# painting gray or black rectangles as 'normal' numbering text
- String sMsg( RTL_CONSTASCII_USTRINGPARAM( "Preview") );
- long nWidth = pVDev->GetTextWidth(sMsg);
- long nTextHeight = pVDev->GetTextHeight();
- long nRectHeight = nTextHeight * 2 / 3;
- long nTopOffset = nTextHeight - nRectHeight;
- Color aBlackColor(COL_BLACK);
- if(aBlackColor == aBackColor)
- aBlackColor.Invert();
-
- for( BYTE nLevel = 0; nLevel < pActNum->GetLevelCount();
- ++nLevel, nYStart = nYStart + nYStep )
- {
- const SvxNumberFormat &rFmt = pActNum->GetLevel(nLevel);
- aNum.GetLevelVal()[ nLevel ] = rFmt.GetStart();
- // --> OD 2008-01-31 #newlistlevelattrs#
- USHORT nXStart( 0 );
- if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
- {
- nXStart = rFmt.GetAbsLSpace() / nWidthRelation;
- }
- else if ( rFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
- {
- const long nTmpXStart( ( rFmt.GetIndentAt() +
- rFmt.GetFirstLineIndent() ) /
- nWidthRelation );
- if ( nTmpXStart < 0 )
- {
- nXStart = 0;
- }
- else
- {
- nXStart = static_cast<USHORT>(nTmpXStart);
- }
- }
- nXStart /= 2;
- nXStart += 2;
- // <--
- USHORT nTextOffset = 2 * nXStep;
- if( SVX_NUM_BITMAP == (rFmt.GetNumberingType()&(~LINK_TOKEN)) )
- {
- if(rFmt.IsShowSymbol())
- {
- nTextOffset = lcl_DrawGraphic(pVDev, rFmt, nXStart, nYStart, nWidthRelation);
- nTextOffset = nTextOffset + nXStep;
- }
- }
- else if( SVX_NUM_CHAR_SPECIAL == rFmt.GetNumberingType() )
- {
- if(rFmt.IsShowSymbol())
- {
- nTextOffset = lcl_DrawBullet(pVDev, rFmt, nXStart, nYStart, aStdFont.GetSize());
- nTextOffset = nTextOffset + nXStep;
- }
- }
- else
- {
- Font aColorFont(aStdFont);
- Color aTmpBulletColor = rFmt.GetBulletColor();
- if(aTmpBulletColor.GetColor() == COL_AUTO)
- aTmpBulletColor = Color(aBackColor.IsDark() ? COL_WHITE : COL_BLACK);
- else if(aTmpBulletColor == aBackColor)
- aTmpBulletColor.Invert();
- aColorFont.SetColor(aTmpBulletColor);
- pVDev->SetFont(aColorFont);
- aNum.SetLevel( nLevel );
- if(pActNum->IsContinuousNumbering())
- aNum.GetLevelVal()[nLevel] = nPreNum;
- String aText(pActNum->MakeNumString( aNum ));
- pVDev->DrawText( Point(nXStart, nYStart), aText );
- pVDev->SetFont(aStdFont);
- nTextOffset = (USHORT)pVDev->GetTextWidth(aText);
- nTextOffset = nTextOffset + nXStep;
- nPreNum++;
- }
- if(pOutlineNames)
- {
- //#i5153# outline numberings still use the style names as text
- pVDev->SetFont(aStdFont);
- sMsg = pOutlineNames[nLevel];
- pVDev->DrawText( Point(nXStart + nTextOffset, nYStart), sMsg );
- }
- else
- {
- //#i5153# the selected rectangle(s) should be black
- if( 0 != (nActLevel & (1<<nLevel)))
- {
- pVDev->SetFillColor( aBlackColor );
- pVDev->SetLineColor( aBlackColor );
- }
- else
- {
- //#i5153# unselected levels are gray
- pVDev->SetFillColor( aLineColor );
- pVDev->SetLineColor( aLineColor );
- }
- Rectangle aRect1(Point(nXStart + nTextOffset, nYStart + nTopOffset), Size(nWidth, nRectHeight));
- pVDev->DrawRect(aRect1);
- }
- }
- }
- }
- DrawOutDev( Point(0,0), aSize,
- Point(0,0), aSize,
- *pVDev );
- delete pVDev;
-
-}
-
-/*-----------------03.12.97 10:02-------------------
-
---------------------------------------------------*/
-SvxNumPositionTabPage::SvxNumPositionTabPage(Window* pParent,
- const SfxItemSet& rSet) :
- SfxTabPage( pParent, SVX_RES( RID_SVXPAGE_NUM_POSITION ), rSet ),
- aPositionFL( this, SVX_RES(FL_POSITION )),
- aLevelFT( this, SVX_RES(FT_LEVEL )),
- aLevelLB( this, SVX_RES(LB_LEVEL )),
- aDistBorderFT( this, SVX_RES(FT_BORDERDIST )),
- aDistBorderMF( this, SVX_RES(MF_BORDERDIST )),
- aRelativeCB( this, SVX_RES(CB_RELATIVE )),
- aIndentFT( this, SVX_RES(FT_INDENT )),
- aIndentMF( this, SVX_RES(MF_INDENT )),
- aDistNumFT( this, SVX_RES(FT_NUMDIST )),
- aDistNumMF( this, SVX_RES(MF_NUMDIST )),
- aAlignFT( this, SVX_RES(FT_ALIGN )),
- aAlignLB( this, SVX_RES(LB_ALIGN )),
- // --> OD 2008-01-10 #newlistlevelattrs#
- aLabelFollowedByFT( this, SVX_RES(FT_LABEL_FOLLOWED_BY) ),
- aLabelFollowedByLB( this, SVX_RES(LB_LABEL_FOLLOWED_BY) ),
- aListtabFT( this, SVX_RES(FT_LISTTAB) ),
- aListtabMF( this, SVX_RES(MF_LISTTAB) ),
- aAlign2FT( this, SVX_RES(FT_ALIGN_2) ),
- aAlign2LB( this, SVX_RES(LB_ALIGN_2) ),
- aAlignedAtFT( this, SVX_RES(FT_ALIGNED_AT) ),
- aAlignedAtMF( this, SVX_RES(MF_ALIGNED_AT) ),
- aIndentAtFT( this, SVX_RES(FT_INDENT_AT) ),
- aIndentAtMF( this, SVX_RES(MF_INDENT_AT) ),
- // <--
- aStandardPB( this, SVX_RES(PB_STANDARD )),
- pPreviewWIN( new SvxNumberingPreview(this, SVX_RES(WIN_PREVIEW ))),
- pActNum(0),
- pSaveNum(0),
- nActNumLvl( USHRT_MAX ),
- nNumItemId(SID_ATTR_NUMBERING_RULE),
- bModified(false),
- bPreset(false),
- bInInintControl(FALSE),
- // --> OD 2008-01-11 #newlistlevelattrs#
- bLabelAlignmentPosAndSpaceModeActive( false )
- // <--
-{
- FreeResource();
- SetExchangeSupport();
- pPreviewWIN->SetBackground(Wallpaper(Color(COL_TRANSPARENT)));
-
- aRelativeCB.Check();
- aAlignLB.SetSelectHdl(LINK(this, SvxNumPositionTabPage, EditModifyHdl_Impl));
- // --> OD 2008-01-10 #newlistlevelattrs#
- aAlign2LB.SetSelectHdl(LINK(this, SvxNumPositionTabPage, EditModifyHdl_Impl));
- for ( USHORT i = 0; i < aAlignLB.GetEntryCount(); ++i )
- {
- aAlign2LB.InsertEntry( aAlignLB.GetEntry( i ) );
- }
- aAlign2LB.SetDropDownLineCount( aAlign2LB.GetEntryCount() );
- aAlign2FT.SetText( aAlignFT.GetText() );
- // <--
-
- Link aLk = LINK(this, SvxNumPositionTabPage, DistanceHdl_Impl);
-
- aDistBorderMF.SetUpHdl(aLk);
- aDistBorderMF.SetDownHdl(aLk);
- aDistBorderMF.SetLoseFocusHdl(aLk);
-
- aDistNumMF.SetUpHdl(aLk);
- aDistNumMF.SetDownHdl(aLk);
- aDistNumMF.SetLoseFocusHdl(aLk);
-
- aIndentMF.SetUpHdl(aLk);
- aIndentMF.SetDownHdl(aLk);
- aIndentMF.SetLoseFocusHdl(aLk);
-
- // --> OD 2008-01-10 #newlistlevelattrs#
- aLabelFollowedByLB.SetDropDownLineCount( aLabelFollowedByLB.GetEntryCount() );
- aLabelFollowedByLB.SetSelectHdl( LINK(this, SvxNumPositionTabPage, LabelFollowedByHdl_Impl) );
-
- aLk = LINK(this, SvxNumPositionTabPage, ListtabPosHdl_Impl);
- aListtabMF.SetUpHdl(aLk);
- aListtabMF.SetDownHdl(aLk);
- aListtabMF.SetLoseFocusHdl(aLk);
-
- aLk = LINK(this, SvxNumPositionTabPage, AlignAtHdl_Impl);
- aAlignedAtMF.SetUpHdl(aLk);
- aAlignedAtMF.SetDownHdl(aLk);
- aAlignedAtMF.SetLoseFocusHdl(aLk);
-
- aLk = LINK(this, SvxNumPositionTabPage, IndentAtHdl_Impl);
- aIndentAtMF.SetUpHdl(aLk);
- aIndentAtMF.SetDownHdl(aLk);
- aIndentAtMF.SetLoseFocusHdl(aLk);
- // <--
-
- aLevelLB.SetSelectHdl(LINK(this, SvxNumPositionTabPage, LevelHdl_Impl));
- aRelativeCB.SetClickHdl(LINK(this, SvxNumPositionTabPage, RelativeHdl_Impl));
- aStandardPB.SetClickHdl(LINK(this, SvxNumPositionTabPage, StandardHdl_Impl));
-
-
- aRelativeCB.Check(bLastRelative);
- pPreviewWIN->SetPositionMode();
- eCoreUnit = rSet.GetPool()->GetMetric(rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE));
-
- //HACK("der Wert sollte mal sinnvol gesetzt werden")
- long nWidth = 10000;
- nWidth = OutputDevice::LogicToLogic( nWidth,
- (MapUnit)eCoreUnit, MAP_100TH_MM );
-
- aDistBorderMF.SetMax(aDistBorderMF.Normalize( nWidth ), FUNIT_100TH_MM );
- aDistNumMF .SetMax(aDistNumMF .Normalize( nWidth ), FUNIT_100TH_MM );
- aIndentMF .SetMax(aIndentMF .Normalize( nWidth ), FUNIT_100TH_MM );
- // --> OD 2008-02-18 #newlistlevelattrs#
- aListtabMF.SetMax(aListtabMF.Normalize( nWidth ), FUNIT_100TH_MM );
- aAlignedAtMF.SetMax(aAlignedAtMF.Normalize( nWidth ), FUNIT_100TH_MM );
- aIndentAtMF.SetMax(aIndentAtMF.Normalize( nWidth ), FUNIT_100TH_MM );
- // <--
- long nLast2 = nWidth /2;
- aDistBorderMF.SetLast( aDistBorderMF.Normalize( nLast2 ), FUNIT_100TH_MM );
- aDistNumMF .SetLast( aDistNumMF .Normalize( nLast2 ), FUNIT_100TH_MM );
- aIndentMF .SetLast( aIndentMF .Normalize( nLast2 ), FUNIT_100TH_MM );
- // --> OD 2008-02-18 #newlistlevelattrs#
- aListtabMF.SetLast(aListtabMF.Normalize( nLast2 ), FUNIT_100TH_MM );
- aAlignedAtMF.SetLast(aAlignedAtMF.Normalize( nLast2 ), FUNIT_100TH_MM );
- aIndentAtMF.SetLast(aIndentAtMF.Normalize( nLast2 ), FUNIT_100TH_MM );
- // <--
-
-#if OSL_DEBUG_LEVEL > 1
- pDebugFixedText = new FixedText(this, 0);
- pDebugFixedText->Show();
- Size aSize(200, 20);
- Point aPos(250,0);
-
- pDebugFixedText->SetPosSizePixel(aPos, aSize);
- pDebugFixedText->SetText( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "Das ist ein Debug-Text" ) ) );
-#endif
-}
-/*-----------------03.12.97 10:02-------------------
-
---------------------------------------------------*/
-SvxNumPositionTabPage::~SvxNumPositionTabPage()
-{
- delete pActNum;
- delete pPreviewWIN;
- delete pSaveNum;
-#if OSL_DEBUG_LEVEL > 1
- delete pDebugFixedText;
-#endif
-}
-/*-------------------------------------------------------*/
-
-#if OSL_DEBUG_LEVEL > 1
-void lcl_PrintDebugOutput(FixedText& rFixed, const SvxNumberFormat& rNumFmt)
-{
-#define TWIP_TO_MM100(TWIP) ((TWIP) >= 0 ? (((TWIP)*127L+36L)/72L) : (((TWIP)*127L-36L)/72L))
-
- sal_Char const sHash[] = " # ";
- if ( rNumFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
- {
- String sDebugText( UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetAbsLSpace() ) ) );
- sDebugText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( sHash ) );
- sDebugText += UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetCharTextDistance() ) );
- sDebugText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( sHash ) );
- sDebugText += UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetFirstLineOffset() ) );
- rFixed.SetText(sDebugText);
- }
- else if ( rNumFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
- {
- String sDebugText( UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetListtabPos() ) ) );
- sDebugText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( sHash ) );
- sDebugText += UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetFirstLineIndent() ) );
- sDebugText.AppendAscii( RTL_CONSTASCII_STRINGPARAM( sHash ) );
- sDebugText += UniString::CreateFromInt32( TWIP_TO_MM100(rNumFmt.GetIndentAt() ) );
- rFixed.SetText(sDebugText);
- }
-
-}
-#endif
-
-/*-----------------03.12.97 10:06-------------------
-
---------------------------------------------------*/
-void SvxNumPositionTabPage::InitControls()
-{
- bInInintControl = TRUE;
- // --> OD 2008-01-11 #newlistlevelattrs#
- const bool bRelative = !bLabelAlignmentPosAndSpaceModeActive &&
- aRelativeCB.IsEnabled() && aRelativeCB.IsChecked();
- // <--
- const bool bSingleSelection = aLevelLB.GetSelectEntryCount() == 1 &&
- USHRT_MAX != nActNumLvl;
-
- aDistBorderMF.Enable( !bLabelAlignmentPosAndSpaceModeActive &&
- ( bSingleSelection || bRelative ) );
- aDistBorderFT.Enable( !bLabelAlignmentPosAndSpaceModeActive &&
- ( bSingleSelection || bRelative ) );
-
- bool bSetDistEmpty = false;
- bool bSameDistBorderNum = !bLabelAlignmentPosAndSpaceModeActive;
- bool bSameDist = !bLabelAlignmentPosAndSpaceModeActive;
- bool bSameIndent = !bLabelAlignmentPosAndSpaceModeActive;
- bool bSameAdjust = true;
-
- // --> OD 2008-01-11 #newlistlevelattrs#
- bool bSameLabelFollowedBy = bLabelAlignmentPosAndSpaceModeActive;
- bool bSameListtab = bLabelAlignmentPosAndSpaceModeActive;
- bool bSameAlignAt = bLabelAlignmentPosAndSpaceModeActive;
- bool bSameIndentAt = bLabelAlignmentPosAndSpaceModeActive;
- // <--
-
- const SvxNumberFormat* aNumFmtArr[SVX_MAX_NUM];
- USHORT nMask = 1;
- USHORT nLvl = USHRT_MAX;
- long nFirstBorderText = 0;
- long nFirstBorderTextRelative = -1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- aNumFmtArr[i] = &pActNum->GetLevel(i);
- if(nActNumLvl & nMask)
- {
- if(USHRT_MAX == nLvl)
- {
- nLvl = i;
- if ( !bLabelAlignmentPosAndSpaceModeActive )
- {
- nFirstBorderText = nLvl > 0 ?
- aNumFmtArr[nLvl]->GetAbsLSpace() + aNumFmtArr[nLvl]->GetFirstLineOffset() -
- aNumFmtArr[nLvl - 1]->GetAbsLSpace() + aNumFmtArr[nLvl - 1]->GetFirstLineOffset():
- aNumFmtArr[nLvl]->GetAbsLSpace() + aNumFmtArr[nLvl]->GetFirstLineOffset();
- }
- }
-
- if( i > nLvl)
- {
- // --> OD 2008-01-11 #newlistlevelattrs#
- bSameAdjust &= aNumFmtArr[i]->GetNumAdjust() == aNumFmtArr[nLvl]->GetNumAdjust();
- if ( !bLabelAlignmentPosAndSpaceModeActive )
- {
- if(bRelative)
- {
- if(nFirstBorderTextRelative == -1)
- nFirstBorderTextRelative =
- (aNumFmtArr[i]->GetAbsLSpace() + aNumFmtArr[i]->GetFirstLineOffset() -
- aNumFmtArr[i - 1]->GetAbsLSpace() + aNumFmtArr[i - 1]->GetFirstLineOffset());
- else
- bSameDistBorderNum &= nFirstBorderTextRelative ==
- (aNumFmtArr[i]->GetAbsLSpace() + aNumFmtArr[i]->GetFirstLineOffset() -
- aNumFmtArr[i - 1]->GetAbsLSpace() + aNumFmtArr[i - 1]->GetFirstLineOffset());
- }
- else
- bSameDistBorderNum &=
- aNumFmtArr[i]->GetAbsLSpace() - aNumFmtArr[i]->GetFirstLineOffset() ==
- aNumFmtArr[i - 1]->GetAbsLSpace() - aNumFmtArr[i - 1]->GetFirstLineOffset();
-
- bSameDist &= aNumFmtArr[i]->GetCharTextDistance() == aNumFmtArr[nLvl]->GetCharTextDistance();
- bSameIndent &= aNumFmtArr[i]->GetFirstLineOffset() == aNumFmtArr[nLvl]->GetFirstLineOffset();
- }
- else
- {
- bSameLabelFollowedBy &=
- aNumFmtArr[i]->GetLabelFollowedBy() == aNumFmtArr[nLvl]->GetLabelFollowedBy();
- bSameListtab &=
- aNumFmtArr[i]->GetListtabPos() == aNumFmtArr[nLvl]->GetListtabPos();
- bSameAlignAt &=
- ( ( aNumFmtArr[i]->GetIndentAt() + aNumFmtArr[i]->GetFirstLineIndent() )
- == ( aNumFmtArr[nLvl]->GetIndentAt() + aNumFmtArr[nLvl]->GetFirstLineIndent() ) );
- bSameIndentAt &=
- aNumFmtArr[i]->GetIndentAt() == aNumFmtArr[nLvl]->GetIndentAt();
- }
- // <--
- }
- }
- nMask <<= 1;
-
- }
- if(bSameDistBorderNum)
- {
- long nDistBorderNum;
- if(bRelative)
- {
- nDistBorderNum = (long)aNumFmtArr[nLvl]->GetAbsLSpace()+ aNumFmtArr[nLvl]->GetFirstLineOffset();
- if(nLvl)
- nDistBorderNum -= (long)aNumFmtArr[nLvl - 1]->GetAbsLSpace()+ aNumFmtArr[nLvl - 1]->GetFirstLineOffset();
- }
- else
- {
- nDistBorderNum = (long)aNumFmtArr[nLvl]->GetAbsLSpace()+ aNumFmtArr[nLvl]->GetFirstLineOffset();
- }
- SetMetricValue(aDistBorderMF, nDistBorderNum, eCoreUnit);
- }
- else
- bSetDistEmpty = true;
-
-#if OSL_DEBUG_LEVEL > 1
- lcl_PrintDebugOutput(*pDebugFixedText, *aNumFmtArr[nLvl]);
-#endif
-
- const String aEmptyStr;
- if(bSameDist)
- SetMetricValue(aDistNumMF, aNumFmtArr[nLvl]->GetCharTextDistance(), eCoreUnit);
- else
- aDistNumMF.SetText(aEmptyStr);
- if(bSameIndent)
- SetMetricValue(aIndentMF, - aNumFmtArr[nLvl]->GetFirstLineOffset(), eCoreUnit);
- else
- aIndentMF.SetText(aEmptyStr);
-
- if(bSameAdjust)
- {
- USHORT nPos = 1; // zentriert
- if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_LEFT)
- nPos = 0;
- else if(aNumFmtArr[nLvl]->GetNumAdjust() == SVX_ADJUST_RIGHT)
- nPos = 2;
- aAlignLB.SelectEntryPos(nPos);
- // --> OD 2008-01-11 #newlistlevelattrs#
- aAlign2LB.SelectEntryPos( nPos );
- // <--
- }
- else
- {
- aAlignLB.SetNoSelection();
- // --> OD 2008-01-11 #newlistlevelattrs#
- aAlign2LB.SetNoSelection();
- // <--
- }
-
- // --> OD 2008-01-11 #newlistlevelattrs#
- if ( bSameLabelFollowedBy )
- {
- USHORT nPos = 0; // LISTTAB
- if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::SPACE )
- {
- nPos = 1;
- }
- else if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::NOTHING )
- {
- nPos = 2;
- }
- aLabelFollowedByLB.SelectEntryPos( nPos );
- }
- else
- {
- aLabelFollowedByLB.SetNoSelection();
- }
-
- if ( aNumFmtArr[nLvl]->GetLabelFollowedBy() == SvxNumberFormat::LISTTAB )
- {
- aListtabFT.Enable( true );
- aListtabMF.Enable( true );
- if ( bSameListtab )
- {
- SetMetricValue( aListtabMF, aNumFmtArr[nLvl]->GetListtabPos(), eCoreUnit );
- }
- else
- {
- aListtabMF.SetText(aEmptyStr);
- }
- }
- else
- {
- aListtabFT.Enable( false );
- aListtabMF.Enable( false );
- aListtabMF.SetText(aEmptyStr);
- }
-
- if ( bSameAlignAt )
- {
- SetMetricValue( aAlignedAtMF,
- aNumFmtArr[nLvl]->GetIndentAt() + aNumFmtArr[nLvl]->GetFirstLineIndent(),
- eCoreUnit );
- }
- else
- {
- aAlignedAtMF.SetText(aEmptyStr);
- }
-
- if ( bSameIndentAt )
- {
- SetMetricValue( aIndentAtMF, aNumFmtArr[nLvl]->GetIndentAt(), eCoreUnit );
- }
- else
- {
- aIndentAtMF.SetText(aEmptyStr);
- }
- // <--
-
- if ( bSetDistEmpty )
- aDistBorderMF.SetText(aEmptyStr);
-
- bInInintControl = FALSE;
-}
-
-/*-----------------03.12.97 10:02-------------------
-
---------------------------------------------------*/
-void SvxNumPositionTabPage::ActivatePage(const SfxItemSet& rSet)
-{
- const SfxPoolItem* pItem;
- UINT16 nTmpNumLvl = USHRT_MAX;
- const SfxItemSet* pExampleSet = GetTabDialog()->GetExampleSet();
- if(pExampleSet)
- {
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_NUM_PRESET, FALSE, &pItem))
- bPreset = ((const SfxBoolItem*)pItem)->GetValue();
- if(SFX_ITEM_SET == pExampleSet->GetItemState(SID_PARAM_CUR_NUM_LEVEL, FALSE, &pItem))
- nTmpNumLvl = ((const SfxUInt16Item*)pItem)->GetValue();
- }
- //
- if(SFX_ITEM_SET == rSet.GetItemState(nNumItemId, FALSE, &pItem))
- {
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
- }
- bModified = (!pActNum->Get( 0 ) || bPreset);
- if(*pSaveNum != *pActNum ||
- nActNumLvl != nTmpNumLvl )
- {
- *pActNum = *pSaveNum;
- nActNumLvl = nTmpNumLvl;
- USHORT nMask = 1;
- aLevelLB.SetUpdateMode(FALSE);
- aLevelLB.SetNoSelection();
- aLevelLB.SelectEntryPos( pActNum->GetLevelCount(), nActNumLvl == USHRT_MAX);
- if(nActNumLvl != USHRT_MAX)
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- aLevelLB.SelectEntryPos( i, TRUE);
- nMask <<= 1 ;
- }
- aRelativeCB.Enable(nActNumLvl != 1);
- aLevelLB.SetUpdateMode(TRUE);
-
- // --> OD 2008-01-11 #newlistlevelattrs#
- InitPosAndSpaceMode();
- ShowControlsDependingOnPosAndSpaceMode();
- // <--
-
- InitControls();
- }
- pPreviewWIN->SetLevel(nActNumLvl);
- pPreviewWIN->Invalidate();
-}
-
-/*-----------------03.12.97 10:02-------------------
-
---------------------------------------------------*/
-int SvxNumPositionTabPage::DeactivatePage(SfxItemSet *_pSet)
-{
- if(_pSet)
- FillItemSet(*_pSet);
- return TRUE;
-}
-
-/*-----------------03.12.97 10:02-------------------
-
---------------------------------------------------*/
-BOOL SvxNumPositionTabPage::FillItemSet( SfxItemSet& rSet )
-{
- rSet.Put(SfxUInt16Item(SID_PARAM_CUR_NUM_LEVEL, nActNumLvl));
-
- if(bModified && pActNum)
- {
- *pSaveNum = *pActNum;
- rSet.Put(SvxNumBulletItem( *pSaveNum ), nNumItemId);
- rSet.Put(SfxBoolItem(SID_PARAM_NUM_PRESET, FALSE));
- }
- return bModified;
-}
-
-/*-----------------03.12.97 10:02-------------------
-
---------------------------------------------------*/
-void SvxNumPositionTabPage::Reset( const SfxItemSet& rSet )
-{
- const SfxPoolItem* pItem;
- //im Draw gibt es das Item als WhichId, im Writer nur als SlotId
- SfxItemState eState = rSet.GetItemState(SID_ATTR_NUMBERING_RULE, FALSE, &pItem);
- if(eState != SFX_ITEM_SET)
- {
- nNumItemId = rSet.GetPool()->GetWhich(SID_ATTR_NUMBERING_RULE);
- eState = rSet.GetItemState(nNumItemId, FALSE, &pItem);
-
- if( eState != SFX_ITEM_SET )
- {
- pItem = &static_cast< const SvxNumBulletItem& >( rSet.Get( nNumItemId, TRUE ) );
- eState = SFX_ITEM_SET;
- }
-
- }
- DBG_ASSERT(eState == SFX_ITEM_SET, "kein Item gefunden!");
- delete pSaveNum;
- pSaveNum = new SvxNumRule(*((SvxNumBulletItem*)pItem)->GetNumRule());
-
- // Ebenen einfuegen
- if(!aLevelLB.GetEntryCount())
- {
- for(USHORT i = 1; i <= pSaveNum->GetLevelCount(); i++)
- aLevelLB.InsertEntry(UniString::CreateFromInt32(i));
- if(pSaveNum->GetLevelCount() > 1)
- {
- String sEntry( UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "1 - ") ) );
- sEntry.Append( UniString::CreateFromInt32( pSaveNum->GetLevelCount() ) );
- aLevelLB.InsertEntry(sEntry);
- aLevelLB.SelectEntry(sEntry);
- }
- else
- aLevelLB.SelectEntryPos(0);
- }
- else
- aLevelLB.SelectEntryPos(aLevelLB.GetEntryCount() - 1);
- USHORT nMask = 1;
- aLevelLB.SetUpdateMode(FALSE);
- aLevelLB.SetNoSelection();
- if(nActNumLvl == USHRT_MAX)
- {
- aLevelLB.SelectEntryPos( pSaveNum->GetLevelCount(), TRUE);
- }
- else
- for(USHORT i = 0; i < pSaveNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- aLevelLB.SelectEntryPos( i, TRUE);
- nMask <<= 1;
- }
- aLevelLB.SetUpdateMode(TRUE);
-
- if(!pActNum)
- pActNum = new SvxNumRule(*pSaveNum);
- else if(*pSaveNum != *pActNum)
- *pActNum = *pSaveNum;
- pPreviewWIN->SetNumRule(pActNum);
-
- // --> OD 2008-01-11 #newlistlevelattrs#
- InitPosAndSpaceMode();
- ShowControlsDependingOnPosAndSpaceMode();
-// const BOOL bDraw = pActNum->IsFeatureSupported(NUM_CONTINUOUS);
-// aDistNumFT.Show(bDraw);
-// aDistNumMF.Show(bDraw);
- // <--
-
- InitControls();
- bModified = FALSE;
-}
-
-// --> OD 2008-01-11 #newlistlevelattrs#
-void SvxNumPositionTabPage::InitPosAndSpaceMode()
-{
- if ( pActNum == 0 )
- {
- DBG_ASSERT( false,
- "<SvxNumPositionTabPage::InitPosAndSpaceMode()> - misusage of method -> <pAktNum> has to be already set!" );
- return;
- }
-
- SvxNumberFormat::SvxNumPositionAndSpaceMode ePosAndSpaceMode =
- SvxNumberFormat::LABEL_ALIGNMENT;
- USHORT nMask = 1;
- for( USHORT i = 0; i < pActNum->GetLevelCount(); ++i )
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt( pActNum->GetLevel(i) );
- ePosAndSpaceMode = aNumFmt.GetPositionAndSpaceMode();
- if ( ePosAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT )
- {
- break;
- }
- }
- nMask <<= 1;
- }
-
- bLabelAlignmentPosAndSpaceModeActive =
- ePosAndSpaceMode == SvxNumberFormat::LABEL_ALIGNMENT;
-}
-
-void SvxNumPositionTabPage::ShowControlsDependingOnPosAndSpaceMode()
-{
- aDistBorderFT.Show( !bLabelAlignmentPosAndSpaceModeActive );
- aDistBorderMF.Show( !bLabelAlignmentPosAndSpaceModeActive );
- aRelativeCB.Show( !bLabelAlignmentPosAndSpaceModeActive );
- aIndentFT.Show( !bLabelAlignmentPosAndSpaceModeActive );
- aIndentMF.Show( !bLabelAlignmentPosAndSpaceModeActive );
- aDistNumFT.Show( !bLabelAlignmentPosAndSpaceModeActive &&
- pActNum->IsFeatureSupported(NUM_CONTINUOUS) );
- aDistNumMF.Show( !bLabelAlignmentPosAndSpaceModeActive &&
- pActNum->IsFeatureSupported(NUM_CONTINUOUS));
- aAlignFT.Show( !bLabelAlignmentPosAndSpaceModeActive );
- aAlignLB.Show( !bLabelAlignmentPosAndSpaceModeActive );
-
- aLabelFollowedByFT.Show( bLabelAlignmentPosAndSpaceModeActive );
- aLabelFollowedByLB.Show( bLabelAlignmentPosAndSpaceModeActive );
- aListtabFT.Show( bLabelAlignmentPosAndSpaceModeActive );
- aListtabMF.Show( bLabelAlignmentPosAndSpaceModeActive );
- aAlign2FT.Show( bLabelAlignmentPosAndSpaceModeActive );
- aAlign2LB.Show( bLabelAlignmentPosAndSpaceModeActive );
- aAlignedAtFT.Show( bLabelAlignmentPosAndSpaceModeActive );
- aAlignedAtMF.Show( bLabelAlignmentPosAndSpaceModeActive );
- aIndentAtFT.Show( bLabelAlignmentPosAndSpaceModeActive );
- aIndentAtMF.Show( bLabelAlignmentPosAndSpaceModeActive );
-}
-// <--
-
-/*-----------------03.12.97 10:02-------------------
-
---------------------------------------------------*/
-SfxTabPage* SvxNumPositionTabPage::Create( Window* pParent,
- const SfxItemSet& rAttrSet)
-{
- return new SvxNumPositionTabPage(pParent, rAttrSet);
-}
-
-/*-----------------04.12.97 12:51-------------------
-
---------------------------------------------------*/
-void SvxNumPositionTabPage::SetMetric(FieldUnit eMetric)
-{
- if(eMetric == FUNIT_MM)
- {
- aDistBorderMF .SetDecimalDigits(1);
- aDistNumMF .SetDecimalDigits(1);
- aIndentMF .SetDecimalDigits(1);
- // --> OD 2008-02-18 #newlistlevelattrs#
- aListtabMF.SetDecimalDigits(1);
- aAlignedAtMF.SetDecimalDigits(1);
- aIndentAtMF.SetDecimalDigits(1);
- // <--
- }
- aDistBorderMF .SetUnit( eMetric );
- aDistNumMF .SetUnit( eMetric );
- aIndentMF .SetUnit( eMetric );
- // --> OD 2008-02-18 #newlistlevelattrs#
- aListtabMF.SetUnit( eMetric );
- aAlignedAtMF.SetUnit( eMetric );
- aIndentAtMF.SetUnit( eMetric );
- // <--
-}
-
-/*-----------------03.12.97 11:06-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumPositionTabPage, EditModifyHdl_Impl, Edit *, EMPTYARG )
-{
- USHORT nMask = 1;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt(pActNum->GetLevel(i));
-
- // --> OD 2008-01-11 #newlistlevelattrs#
- const USHORT nPos = aAlignLB.IsVisible()
- ? aAlignLB.GetSelectEntryPos()
- : aAlign2LB.GetSelectEntryPos();
- // <--
- SvxAdjust eAdjust = SVX_ADJUST_CENTER;
- if(nPos == 0)
- eAdjust = SVX_ADJUST_LEFT;
- else if(nPos == 2)
- eAdjust = SVX_ADJUST_RIGHT;
- aNumFmt.SetNumAdjust( eAdjust );
- pActNum->SetLevel(i, aNumFmt);
- }
- nMask <<= 1;
- }
- SetModified();
- return 0;
-}
-/*-----------------03.12.97 11:11-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumPositionTabPage, LevelHdl_Impl, ListBox *, pBox )
-{
- USHORT nSaveNumLvl = nActNumLvl;
- nActNumLvl = 0;
- if(pBox->IsEntryPosSelected( pActNum->GetLevelCount() ) &&
- (pBox->GetSelectEntryCount() == 1 || nSaveNumLvl != 0xffff))
- {
- nActNumLvl = 0xFFFF;
- pBox->SetUpdateMode(FALSE);
- for( USHORT i = 0; i < pActNum->GetLevelCount(); i++ )
- pBox->SelectEntryPos( i, FALSE );
- pBox->SetUpdateMode(TRUE);
- }
- else if(pBox->GetSelectEntryCount())
- {
- USHORT nMask = 1;
- for( USHORT i = 0; i < pActNum->GetLevelCount(); i++ )
- {
- if(pBox->IsEntryPosSelected( i ))
- nActNumLvl |= nMask;
- nMask <<= 1;
- }
- pBox->SelectEntryPos( pActNum->GetLevelCount(), FALSE );
- }
- else
- {
- nActNumLvl = nSaveNumLvl;
- USHORT nMask = 1;
- for( USHORT i = 0; i < pActNum->GetLevelCount(); i++ )
- {
- if(nActNumLvl & nMask)
- {
- pBox->SelectEntryPos(i);
- break;
- }
- nMask <<=1;
- }
- }
- aRelativeCB.Enable(nActNumLvl != 1);
- SetModified();
- // --> OD 2008-01-15 #newlistlevelattrs#
- InitPosAndSpaceMode();
- ShowControlsDependingOnPosAndSpaceMode();
- // <--
- InitControls();
- return 0;
-}
-/*-----------------03.12.97 12:24-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumPositionTabPage, DistanceHdl_Impl, MetricField *, pFld )
-{
- if(bInInintControl)
- return 0;
- long nValue = GetCoreValue(*pFld, eCoreUnit);
- USHORT nMask = 1;
-#if OSL_DEBUG_LEVEL > 1
- BOOL bFirst = TRUE;
-#endif
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt( pActNum->GetLevel( i ) );
- if(pFld == &aDistBorderMF)
- {
-
- if(aRelativeCB.IsChecked())
- {
- if(0 == i)
- {
- long nTmp = aNumFmt.GetFirstLineOffset();
- aNumFmt.SetAbsLSpace( USHORT(nValue - nTmp));
- }
- else
- {
- long nTmp = pActNum->GetLevel( i - 1 ).GetAbsLSpace() +
- pActNum->GetLevel( i - 1 ).GetFirstLineOffset() -
- pActNum->GetLevel( i ).GetFirstLineOffset();
-
- aNumFmt.SetAbsLSpace( USHORT(nValue + nTmp));
- }
- }
- else
- {
- aNumFmt.SetAbsLSpace( (short)nValue - aNumFmt.GetFirstLineOffset());
- }
- }
- else if(pFld == &aDistNumMF)
- {
- aNumFmt.SetCharTextDistance( (short)nValue );
- }
- else if(pFld == &aIndentMF)
- {
- //jetzt muss mit dem FirstLineOffset auch der AbsLSpace veraendert werden
- long nDiff = nValue + aNumFmt.GetFirstLineOffset();
- long nAbsLSpace = aNumFmt.GetAbsLSpace();
- aNumFmt.SetAbsLSpace(USHORT(nAbsLSpace + nDiff));
- aNumFmt.SetFirstLineOffset( -(short)nValue );
- }
-
-#if OSL_DEBUG_LEVEL > 1
- if(bFirst)
- lcl_PrintDebugOutput(*pDebugFixedText, aNumFmt);
- bFirst = FALSE;
-#endif
- pActNum->SetLevel( i, aNumFmt );
- }
- nMask <<= 1;
- }
-
- SetModified();
- if(!aDistBorderMF.IsEnabled())
- {
- String aEmptyStr;
- aDistBorderMF.SetText(aEmptyStr);
- }
-
- return 0;
-}
-
-/*-----------------04.12.97 12:35-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumPositionTabPage, RelativeHdl_Impl, CheckBox *, pBox )
-{
- BOOL bOn = pBox->IsChecked();
- BOOL bSingleSelection = aLevelLB.GetSelectEntryCount() == 1 && USHRT_MAX != nActNumLvl;
- BOOL bSetValue = FALSE;
- long nValue = 0;
- if(bOn || bSingleSelection)
- {
- USHORT nMask = 1;
- BOOL bFirst = TRUE;
- bSetValue = TRUE;
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- const SvxNumberFormat &rNumFmt = pActNum->GetLevel(i);
- if(bFirst)
- {
- nValue = rNumFmt.GetAbsLSpace() + rNumFmt.GetFirstLineOffset();
- if(bOn && i)
- nValue -= (pActNum->GetLevel(i - 1).GetAbsLSpace() + pActNum->GetLevel(i - 1).GetFirstLineOffset());
- }
- else
- bSetValue = nValue ==
- (rNumFmt.GetAbsLSpace() + rNumFmt.GetFirstLineOffset()) -
- (pActNum->GetLevel(i - 1).GetAbsLSpace() + pActNum->GetLevel(i - 1).GetFirstLineOffset());
- bFirst = FALSE;
- }
- nMask <<= 1;
- }
-
- }
- String aEmptyStr;
- if(bSetValue)
- SetMetricValue(aDistBorderMF, nValue, eCoreUnit);
- else
- aDistBorderMF.SetText(aEmptyStr);
- aDistBorderMF.Enable(bOn || bSingleSelection);
- aDistBorderFT.Enable(bOn || bSingleSelection);
- bLastRelative = bOn;
- return 0;
-}
-
-// --> OD 2008-01-14 #newlistlevelattrs#
-IMPL_LINK( SvxNumPositionTabPage, LabelFollowedByHdl_Impl, ListBox*, EMPTYARG )
-{
- // determine value to be set at the chosen list levels
- SvxNumberFormat::SvxNumLabelFollowedBy eLabelFollowedBy =
- SvxNumberFormat::LISTTAB;
- {
- const USHORT nPos = aLabelFollowedByLB.GetSelectEntryPos();
- if ( nPos == 1 )
- {
- eLabelFollowedBy = SvxNumberFormat::SPACE;
- }
- else if ( nPos == 2 )
- {
- eLabelFollowedBy = SvxNumberFormat::NOTHING;
- }
- }
-
- // set value at the chosen list levels
- bool bSameListtabPos = true;
- USHORT nFirstLvl = USHRT_MAX;
- USHORT nMask = 1;
- for( USHORT i = 0; i < pActNum->GetLevelCount(); ++i )
- {
- if ( nActNumLvl & nMask )
- {
- SvxNumberFormat aNumFmt( pActNum->GetLevel(i) );
- aNumFmt.SetLabelFollowedBy( eLabelFollowedBy );
- pActNum->SetLevel( i, aNumFmt );
-
- if ( nFirstLvl == USHRT_MAX )
- {
- nFirstLvl = i;
- }
- else
- {
- bSameListtabPos &= aNumFmt.GetListtabPos() ==
- pActNum->GetLevel( nFirstLvl ).GetListtabPos();
- }
- }
- nMask <<= 1;
- }
-
- // enable/disable metric field for list tab stop position depending on
- // selected item following the list label.
- aListtabFT.Enable( eLabelFollowedBy == SvxNumberFormat::LISTTAB );
- aListtabMF.Enable( eLabelFollowedBy == SvxNumberFormat::LISTTAB );
- if ( bSameListtabPos && eLabelFollowedBy == SvxNumberFormat::LISTTAB )
- {
- SetMetricValue( aListtabMF, pActNum->GetLevel( nFirstLvl ).GetListtabPos(), eCoreUnit );
- }
- else
- {
- aListtabMF.SetText( String() );
- }
-
- SetModified();
-
- return 0;
-}
-// <--
-
-// --> OD 2008-01-14 #newlistlevelattrs#
-IMPL_LINK( SvxNumPositionTabPage, ListtabPosHdl_Impl, MetricField*, pFld )
-{
- // determine value to be set at the chosen list levels
- const long nValue = GetCoreValue( *pFld, eCoreUnit );
-
- // set value at the chosen list levels
- USHORT nMask = 1;
- for( USHORT i = 0; i < pActNum->GetLevelCount(); ++i )
- {
- if ( nActNumLvl & nMask )
- {
- SvxNumberFormat aNumFmt( pActNum->GetLevel(i) );
- aNumFmt.SetListtabPos( nValue );
- pActNum->SetLevel( i, aNumFmt );
-#if OSL_DEBUG_LEVEL > 1
- lcl_PrintDebugOutput(*pDebugFixedText, aNumFmt);
-#endif
- }
- nMask <<= 1;
- }
-
- SetModified();
-
- return 0;
-}
-// <--
-
-// --> OD 2008-01-14 #newlistlevelattrs#
-IMPL_LINK( SvxNumPositionTabPage, AlignAtHdl_Impl, MetricField*, pFld )
-{
- // determine value to be set at the chosen list levels
- const long nValue = GetCoreValue( *pFld, eCoreUnit );
-
- // set value at the chosen list levels
- USHORT nMask = 1;
- for( USHORT i = 0; i < pActNum->GetLevelCount(); ++i )
- {
- if ( nActNumLvl & nMask )
- {
- SvxNumberFormat aNumFmt( pActNum->GetLevel(i) );
- const long nFirstLineIndent = nValue - aNumFmt.GetIndentAt();
- aNumFmt.SetFirstLineIndent( nFirstLineIndent );
- pActNum->SetLevel( i, aNumFmt );
-#if OSL_DEBUG_LEVEL > 1
- lcl_PrintDebugOutput(*pDebugFixedText, aNumFmt);
-#endif
- }
- nMask <<= 1;
- }
-
- SetModified();
-
- return 0;
-}
-// <--
-
-// --> OD 2008-01-14 #newlistlevelattrs#
-IMPL_LINK( SvxNumPositionTabPage, IndentAtHdl_Impl, MetricField*, pFld )
-{
- // determine value to be set at the chosen list levels
- const long nValue = GetCoreValue( *pFld, eCoreUnit );
-
- // set value at the chosen list levels
- USHORT nMask = 1;
- for( USHORT i = 0; i < pActNum->GetLevelCount(); ++i )
- {
- if ( nActNumLvl & nMask )
- {
- SvxNumberFormat aNumFmt( pActNum->GetLevel(i) );
- const long nAlignedAt = aNumFmt.GetIndentAt() +
- aNumFmt.GetFirstLineIndent();
- aNumFmt.SetIndentAt( nValue );
- const long nNewFirstLineIndent = nAlignedAt - nValue;
- aNumFmt.SetFirstLineIndent( nNewFirstLineIndent );
- pActNum->SetLevel( i, aNumFmt );
-#if OSL_DEBUG_LEVEL > 1
- lcl_PrintDebugOutput(*pDebugFixedText, aNumFmt);
-#endif
- }
- nMask <<= 1;
- }
-
- SetModified();
-
- return 0;
-}
-// <--
-/*-----------------05.12.97 15:33-------------------
-
---------------------------------------------------*/
-IMPL_LINK( SvxNumPositionTabPage, StandardHdl_Impl, PushButton *, EMPTYARG )
-{
- USHORT nMask = 1;
- // --> OD 2008-02-11 #newlistlevelattrs#
- SvxNumRule aTmpNumRule( pActNum->GetFeatureFlags(),
- pActNum->GetLevelCount(),
- pActNum->IsContinuousNumbering(),
- SVX_RULETYPE_NUMBERING,
- pActNum->GetLevel( 0 ).GetPositionAndSpaceMode() );
- // <--
- for(USHORT i = 0; i < pActNum->GetLevelCount(); i++)
- {
- if(nActNumLvl & nMask)
- {
- SvxNumberFormat aNumFmt( pActNum->GetLevel( i ) );
- SvxNumberFormat aTempFmt(aTmpNumRule.GetLevel( i ));
- // --> OD 2008-02-05 #newlistlevelattrs#
- aNumFmt.SetPositionAndSpaceMode( aTempFmt.GetPositionAndSpaceMode() );
- if ( aTempFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_WIDTH_AND_POSITION )
- {
- aNumFmt.SetAbsLSpace( aTempFmt.GetAbsLSpace() );
- aNumFmt.SetCharTextDistance( aTempFmt.GetCharTextDistance() );
- aNumFmt.SetFirstLineOffset( aTempFmt.GetFirstLineOffset() );
- }
- else if ( aTempFmt.GetPositionAndSpaceMode() == SvxNumberFormat::LABEL_ALIGNMENT )
- {
- aNumFmt.SetNumAdjust( aTempFmt.GetNumAdjust() );
- aNumFmt.SetLabelFollowedBy( aTempFmt.GetLabelFollowedBy() );
- aNumFmt.SetListtabPos( aTempFmt.GetListtabPos() );
- aNumFmt.SetFirstLineIndent( aTempFmt.GetFirstLineIndent() );
- aNumFmt.SetIndentAt( aTempFmt.GetIndentAt() );
- }
- // <--
-
- pActNum->SetLevel( i, aNumFmt );
- }
- nMask <<= 1;
- }
-
- InitControls();
- SetModified();
- return 0;
-}
-
-void SvxNumPositionTabPage::SetModified(BOOL bRepaint)
-{
- bModified = TRUE;
- if(bRepaint)
- {
- pPreviewWIN->SetLevel(nActNumLvl);
- pPreviewWIN->Invalidate();
- }
-}
-
-void SvxNumOptionsTabPage::SetModified(BOOL bRepaint)
-{
- bModified = TRUE;
- if(bRepaint)
- {
- pPreviewWIN->SetLevel(nActNumLvl);
- pPreviewWIN->Invalidate();
- }
-}
-
-//Add CHINA001
-void SvxNumOptionsTabPage::PageCreated(SfxAllItemSet aSet)
-{
- SFX_ITEMSET_ARG (&aSet,pListItem,SfxStringListItem,SID_CHAR_FMT_LIST_BOX,sal_False);
- SFX_ITEMSET_ARG (&aSet,pNumCharFmt,SfxStringItem,SID_NUM_CHAR_FMT,sal_False);
- SFX_ITEMSET_ARG (&aSet,pBulletCharFmt,SfxStringItem,SID_BULLET_CHAR_FMT,sal_False);
- SFX_ITEMSET_ARG (&aSet,pMetricItem,SfxAllEnumItem,SID_METRIC_ITEM,sal_False);
-
- if (pNumCharFmt &&pBulletCharFmt)
- SetCharFmts( pNumCharFmt->GetValue(),pBulletCharFmt->GetValue());
-
- if (pListItem)
- {
- ListBox& myCharFmtLB = GetCharFmtListBox();
- const List *pList = (pListItem)->GetList();
- sal_uInt32 nCount = pList->Count();;
- for(sal_uInt32 i = 0; i < nCount; i++)
- {
- myCharFmtLB.InsertEntry(*(const String*)(pList->GetObject(i)) );
-
- }
- }
- if (pMetricItem)
- SetMetric(static_cast<FieldUnit>(pMetricItem->GetValue()));
-}
-
-//end of add CHINA001
-
-//add CHINA001 begin
-
-void SvxNumPositionTabPage::PageCreated(SfxAllItemSet aSet)
-{
- SFX_ITEMSET_ARG (&aSet,pMetricItem,SfxAllEnumItem,SID_METRIC_ITEM,sal_False);
-
- if (pMetricItem)
- SetMetric(static_cast<FieldUnit>(pMetricItem->GetValue()));
-}