diff options
Diffstat (limited to 'sw/source/ui/frmdlg/cption.cxx')
-rw-r--r-- | sw/source/ui/frmdlg/cption.cxx | 648 |
1 files changed, 648 insertions, 0 deletions
diff --git a/sw/source/ui/frmdlg/cption.cxx b/sw/source/ui/frmdlg/cption.cxx new file mode 100644 index 000000000000..5e620ce6955c --- /dev/null +++ b/sw/source/ui/frmdlg/cption.cxx @@ -0,0 +1,648 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +// MARKER(update_precomp.py): autogen include statement, do not remove +#include "precompiled_sw.hxx" +#ifdef SW_DLLIMPLEMENTATION +#undef SW_DLLIMPLEMENTATION +#endif + + + +#ifndef _VIEW_HXX +#include <view.hxx> +#endif +#include <wrtsh.hxx> +#include <cption.hxx> +#include <fldmgr.hxx> +#include <expfld.hxx> +#include <numrule.hxx> +#include <poolfmt.hxx> +#include <docsh.hxx> +#include <frmfmt.hxx> +#include <calc.hxx> +#include <uitool.hxx> +#include <doc.hxx> +#include <modcfg.hxx> +#include <swmodule.hxx> +#include <com/sun/star/frame/XStorable.hpp> +#include <com/sun/star/text/GraphicCrop.hpp> +#include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp> +#include <com/sun/star/text/XTextTableCursor.hpp> +#include <com/sun/star/text/XTextTablesSupplier.hpp> +#include <com/sun/star/text/TableColumnSeparator.hpp> +#include <com/sun/star/text/XTextTable.hpp> +#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp> +#include <com/sun/star/text/XTextEmbeddedObject.hpp> +#include <com/sun/star/text/XTextFramesSupplier.hpp> +#include <com/sun/star/text/XTextFrame.hpp> + +#ifndef _FRMUI_HRC +#include <frmui.hrc> +#endif +#ifndef _CPTION_HRC +#include <cption.hrc> +#endif +#include <SwStyleNameMapper.hxx> +using namespace ::com::sun::star; + +extern String* GetOldGrfCat(); +extern String* GetOldTabCat(); +extern String* GetOldFrmCat(); +extern String* GetOldDrwCat(); + +class SwSequenceOptionDialog : public SvxStandardDialog +{ + FixedLine aFlHeader; + FixedText aFtLevel; + ListBox aLbLevel; + FixedText aFtDelim; + Edit aEdDelim; + + FixedLine aFlCatAndFrame; + FixedText aFtCharStyle; + ListBox aLbCharStyle; + CheckBox aApplyBorderAndShadowCB; + + //#i61007# order of captions + FixedLine aFlCaptionOrder; + FixedText aFtCaptionOrder; + ListBox aLbCaptionOrder; + + OKButton aOKButton; + CancelButton aCancelButton; + HelpButton aHelpButton; + + SwView& rView; + String aFldTypeName; + +public: + SwSequenceOptionDialog( Window *pParent, SwView &rV, + const String& rSeqFldType ); + virtual ~SwSequenceOptionDialog(); + virtual void Apply(); + + bool IsApplyBorderAndShadow( void ) { return aApplyBorderAndShadowCB.IsChecked(); } + void SetApplyBorderAndShadow( bool bSet ) { aApplyBorderAndShadowCB.Check(bSet); } + + //#i61007# order of captions + bool IsOrderNumberingFirst() const {return aLbCaptionOrder.GetSelectEntryPos() == 1;} + void SetOrderNumberingFirst(bool bSet) { aLbCaptionOrder.SelectEntryPos( bSet ? 1 : 0 ); } + + void SetCharacterStyle(const String& rStyle); + String GetCharacterStyle() const; +}; + +SwCaptionDialog::SwCaptionDialog( Window *pParent, SwView &rV ) : + + SvxStandardDialog( pParent, SW_RES(DLG_CAPTION) ), + + aTextText (this, SW_RES(TXT_TEXT )), + aTextEdit (this, SW_RES(EDT_TEXT )), + aSettingsFL (this, SW_RES(FL_SETTINGS)), + aCategoryText (this, SW_RES(TXT_CATEGORY)), + aCategoryBox (this, SW_RES(BOX_CATEGORY)), + aFormatText (this, SW_RES(TXT_FORMAT )), + aFormatBox (this, SW_RES(BOX_FORMAT )), + aNumberingSeparatorFT(this, SW_RES(FT_NUM_SEP )), + aNumberingSeparatorED(this, SW_RES(ED_NUM_SEP )), + aSepText (this, SW_RES(TXT_SEP )), + aSepEdit (this, SW_RES(EDT_SEP )), + aPosText (this, SW_RES(TXT_POS )), + aPosBox (this, SW_RES(BOX_POS )), + aOKButton (this, SW_RES(BTN_OK )), + aCancelButton (this, SW_RES(BTN_CANCEL )), + aHelpButton (this, SW_RES(BTN_HELP )), + aAutoCaptionButton(this, SW_RES(BTN_AUTOCAPTION)), + aOptionButton (this, SW_RES(BTN_OPTION )), + sNone( SW_RES( STR_CATEGORY_NONE )), + aPrevWin (this, SW_RES(WIN_SAMPLE )), + rView( rV ), + pMgr( new SwFldMgr(rView.GetWrtShellPtr()) ), + bCopyAttributes( FALSE ), + bOrderNumberingFirst( SW_MOD()->GetModuleConfig()->IsCaptionOrderNumberingFirst() ) +{ + //#i61007# order of captions + if( bOrderNumberingFirst ) + ApplyCaptionOrder(); + SwWrtShell &rSh = rView.GetWrtShell(); + uno::Reference< frame::XModel > xModel = rView.GetDocShell()->GetBaseModel(); + + eType = rSh.GetSelectionType(); + if ( eType & nsSelectionType::SEL_OLE ) + { + eType = nsSelectionType::SEL_GRF; + uno::Reference< text::XTextEmbeddedObjectsSupplier > xObjs(xModel, uno::UNO_QUERY); + xNameAccess = xObjs->getEmbeddedObjects(); + } + + Link aLk = LINK( this, SwCaptionDialog, ModifyHdl ); + aCategoryBox.SetModifyHdl( aLk ); + aTextEdit .SetModifyHdl( aLk ); + aNumberingSeparatorED.SetModifyHdl ( aLk ); + aSepEdit .SetModifyHdl( aLk ); + + aLk = LINK(this, SwCaptionDialog, SelectHdl); + aCategoryBox.SetSelectHdl( aLk ); + aFormatBox .SetSelectHdl( aLk ); + aOptionButton.SetClickHdl( LINK( this, SwCaptionDialog, OptionHdl ) ); + aAutoCaptionButton.SetClickHdl(LINK(this, SwCaptionDialog, CaptionHdl)); + + aCategoryBox.InsertEntry( sNone ); + sal_uInt16 i, nCount = pMgr->GetFldTypeCount(); + for (i = 0; i < nCount; i++) + { + SwFieldType *pType = pMgr->GetFldType( USHRT_MAX, i ); + if( pType->Which() == RES_SETEXPFLD && + ((SwSetExpFieldType *) pType)->GetType() & nsSwGetSetExpType::GSE_SEQ ) + aCategoryBox.InsertEntry(pType->GetName()); + } + + String* pString = 0; + sal_uInt16 nPoolId = 0; + if (eType & nsSelectionType::SEL_GRF) + { + nPoolId = RES_POOLCOLL_LABEL_ABB; + pString = ::GetOldGrfCat(); + bCopyAttributes = TRUE; + sObjectName = rSh.GetFlyName(); + //if not OLE + if(!xNameAccess.is()) + { + uno::Reference< text::XTextGraphicObjectsSupplier > xGraphics(xModel, uno::UNO_QUERY); + xNameAccess = xGraphics->getGraphicObjects(); + } + + } + else if( eType & nsSelectionType::SEL_TBL ) + { + nPoolId = RES_POOLCOLL_LABEL_TABLE; + pString = ::GetOldTabCat(); + uno::Reference< text::XTextTablesSupplier > xTables(xModel, uno::UNO_QUERY); + xNameAccess = xTables->getTextTables(); + sObjectName = rSh.GetTableFmt()->GetName(); + } + else if( eType & nsSelectionType::SEL_FRM ) + { + nPoolId = RES_POOLCOLL_LABEL_FRAME; + pString = ::GetOldFrmCat(); + uno::Reference< text::XTextFramesSupplier > xFrms(xModel, uno::UNO_QUERY); + xNameAccess = xFrms->getTextFrames(); + sObjectName = rSh.GetFlyName(); + } + else if( eType == nsSelectionType::SEL_TXT ) + { + nPoolId = RES_POOLCOLL_LABEL_FRAME; + pString = ::GetOldFrmCat(); + } + else if( eType & nsSelectionType::SEL_DRW ) + { + nPoolId = RES_POOLCOLL_LABEL_DRAWING; + pString = ::GetOldDrwCat(); + } + if( nPoolId ) + { + if( pString && pString->Len()) + aCategoryBox.SetText( *pString ); + else + aCategoryBox.SetText( + SwStyleNameMapper::GetUIName( nPoolId, aEmptyStr )); + } + + // aFormatBox + sal_uInt16 nSelFmt = SVX_NUM_ARABIC; + nCount = pMgr->GetFldTypeCount(); + SwFieldType* pFldType; + for ( i = nCount; i; ) + if( ( pFldType = pMgr->GetFldType(USHRT_MAX, --i))->GetName() == + aCategoryBox.GetText() ) + { + nSelFmt = (sal_uInt16)((SwSetExpFieldType*)pFldType)->GetSeqFormat(); + break; + } + + + nCount = pMgr->GetFormatCount(TYP_SEQFLD, sal_False); + for ( i = 0; i < nCount; ++i ) + { + aFormatBox.InsertEntry( pMgr->GetFormatStr(TYP_SEQFLD, i) ); + sal_uInt16 nFmtId = pMgr->GetFormatId(TYP_SEQFLD, i); + aFormatBox.SetEntryData( i, reinterpret_cast<void*>( nFmtId ) ); + if( nFmtId == nSelFmt ) + aFormatBox.SelectEntryPos( i ); + } + + // aPosBox + switch (eType) + { + case nsSelectionType::SEL_GRF: + case nsSelectionType::SEL_TBL: + case nsSelectionType::SEL_TBL | nsSelectionType::SEL_NUM: + case nsSelectionType::SEL_TBL | nsSelectionType::SEL_TXT: + case nsSelectionType::SEL_TBL | nsSelectionType::SEL_NUM | nsSelectionType::SEL_TXT: + case nsSelectionType::SEL_DRW: + case nsSelectionType::SEL_DRW | nsSelectionType::SEL_BEZ: + aPosBox.InsertEntry(SW_RESSTR(STR_ABOVE)); + aPosBox.InsertEntry(SW_RESSTR(STR_CP_BELOW)); + break; + case nsSelectionType::SEL_FRM: + case nsSelectionType::SEL_TXT: + aPosBox.InsertEntry(SW_RESSTR(STR_BEGINNING)); + aPosBox.InsertEntry(SW_RESSTR(STR_END )); + break; + } + aPosBox.SelectEntryPos(1); + if (eType & (nsSelectionType::SEL_GRF|nsSelectionType::SEL_DRW)) + { + aPosText.Enable( sal_False ); + aPosBox.Enable( sal_False ); + } + + aCategoryBox.GetModifyHdl().Call(&aCategoryBox); + + FreeResource(); + + CheckButtonWidth(); + aTextEdit.GrabFocus(); + DrawSample(); +} + +void SwCaptionDialog::Apply() +{ + InsCaptionOpt aOpt; + aOpt.UseCaption() = sal_True; + String aName( aCategoryBox.GetText() ); + if ( aName == sNone ) + aOpt.SetCategory( aEmptyStr ); + else + { + aName.EraseLeadingChars( ' ' ); + aName.EraseTrailingChars( ' ' ); + aOpt.SetCategory( aName ); + } + aOpt.SetNumType( (sal_uInt16)(sal_uIntPtr)aFormatBox.GetEntryData( aFormatBox.GetSelectEntryPos() ) ); + aOpt.SetSeparator( aSepEdit.IsEnabled() ? aSepEdit.GetText() : String() ); + aOpt.SetNumSeparator( aNumberingSeparatorED.GetText() ); + aOpt.SetCaption( aTextEdit.GetText() ); + aOpt.SetPos( aPosBox.GetSelectEntryPos() ); + aOpt.IgnoreSeqOpts() = sal_True; + aOpt.CopyAttributes() = bCopyAttributes; + aOpt.SetCharacterStyle( sCharacterStyle ); + rView.InsertCaption( &aOpt ); +} + +IMPL_LINK_INLINE_START( SwCaptionDialog, OptionHdl, Button*, pButton ) +{ + String sFldTypeName = aCategoryBox.GetText(); + if(sFldTypeName == sNone) + sFldTypeName = aEmptyStr; + SwSequenceOptionDialog aDlg( pButton, rView, sFldTypeName ); + aDlg.SetApplyBorderAndShadow(bCopyAttributes); + aDlg.SetCharacterStyle( sCharacterStyle ); + aDlg.SetOrderNumberingFirst( bOrderNumberingFirst ); + aDlg.Execute(); + bCopyAttributes = aDlg.IsApplyBorderAndShadow(); + sCharacterStyle = aDlg.GetCharacterStyle(); + //#i61007# order of captions + if( bOrderNumberingFirst != aDlg.IsOrderNumberingFirst() ) + { + bOrderNumberingFirst = aDlg.IsOrderNumberingFirst(); + SW_MOD()->GetModuleConfig()->SetCaptionOrderNumberingFirst(bOrderNumberingFirst); + ApplyCaptionOrder(); + } + DrawSample(); + return 0; +} +IMPL_LINK_INLINE_END( SwCaptionDialog, OptionHdl, Button*, EMPTYARG ) + +IMPL_LINK_INLINE_START( SwCaptionDialog, SelectHdl, ListBox *, EMPTYARG ) +{ + DrawSample(); + return 0; +} +IMPL_LINK_INLINE_END( SwCaptionDialog, SelectHdl, ListBox *, EMPTYARG ) + + + +IMPL_LINK( SwCaptionDialog, ModifyHdl, Edit *, EMPTYARG ) +{ + SwWrtShell &rSh = rView.GetWrtShell(); + String sFldTypeName = aCategoryBox.GetText(); + sal_Bool bCorrectFldName = sFldTypeName.Len() > 0; + sal_Bool bNone = sFldTypeName == sNone; + SwFieldType* pType = (bCorrectFldName && !bNone) + ? rSh.GetFldType( RES_SETEXPFLD, sFldTypeName ) + : 0; + aOKButton.Enable( bCorrectFldName && + (!pType || + ((SwSetExpFieldType*)pType)->GetType() == nsSwGetSetExpType::GSE_SEQ) + && 0 != sFldTypeName.Len() ); + aOptionButton.Enable( aOKButton.IsEnabled() && !bNone ); + aFormatText.Enable( !bNone ); + aFormatBox.Enable( !bNone ); + aSepText.Enable( !bNone ); + aSepEdit.Enable( !bNone ); + DrawSample(); + return 0; +} + +IMPL_LINK(SwCaptionDialog, CaptionHdl, PushButton*, EMPTYARG) +{ + SfxItemSet aSet( rView.GetDocShell()->GetDoc()->GetAttrPool() ); + SwCaptionOptDlg aDlg( this, aSet ); + aDlg.Execute(); + + return 0; +} + +void SwCaptionDialog::DrawSample() +{ + String aStr; + + // Nummer + String sFldTypeName = aCategoryBox.GetText(); + sal_Bool bNone = sFldTypeName == sNone; + if( !bNone ) + { + sal_uInt16 nNumFmt = (sal_uInt16)(sal_uIntPtr)aFormatBox.GetEntryData( + aFormatBox.GetSelectEntryPos() ); + if( SVX_NUM_NUMBER_NONE != nNumFmt ) + { + // Kategorie + //#i61007# order of captions + if( !bOrderNumberingFirst ) + { + aStr += sFldTypeName; + if ( aStr.Len() > 0 ) + aStr += ' '; + } + + SwWrtShell &rSh = rView.GetWrtShell(); + SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType( + RES_SETEXPFLD, sFldTypeName ); + if( pFldType && pFldType->GetOutlineLvl() < MAXLEVEL ) + { + sal_Int8 nLvl = pFldType->GetOutlineLvl(); + SwNumberTree::tNumberVector aNumVector; + for( sal_Int8 i = 0; i <= nLvl; ++i ) + aNumVector.push_back(1); + + String sNumber( rSh.GetOutlineNumRule()-> + MakeNumString(aNumVector, sal_False )); + if( sNumber.Len() ) + (aStr += sNumber) += pFldType->GetDelimiter(); + } + + switch( nNumFmt ) + { + case SVX_NUM_CHARS_UPPER_LETTER: aStr += 'A'; break; + case SVX_NUM_CHARS_UPPER_LETTER_N: aStr += 'A'; break; + case SVX_NUM_CHARS_LOWER_LETTER: aStr += 'a'; break; + case SVX_NUM_CHARS_LOWER_LETTER_N: aStr += 'a'; break; + case SVX_NUM_ROMAN_UPPER: aStr += 'I'; break; + case SVX_NUM_ROMAN_LOWER: aStr += 'i'; break; + //case ARABIC: + default: aStr += '1'; break; + } + //#i61007# order of captions + if( bOrderNumberingFirst ) + { + aStr += aNumberingSeparatorED.GetText(); + aStr += sFldTypeName; + } + + } + aStr += aSepEdit.GetText(); + } + aStr += aTextEdit.GetText(); + // do preview! + aPrevWin.SetPreviewText( aStr ); +} + +void SwCaptionDialog::CheckButtonWidth() +{ + // check if the text of the AutoCaption button is to wide + const long nOffset = 10; + String sText = aAutoCaptionButton.GetText(); + long nTxtW = aAutoCaptionButton.GetTextWidth( sText ); + if ( sText.Search( '~' ) == STRING_NOTFOUND ) + nTxtW += nOffset; + long nBtnW = aAutoCaptionButton.GetSizePixel().Width(); + if ( nTxtW > nBtnW ) + { + // then broaden all buttons + Size aNewSize; + long nDelta = Max( ( nTxtW - nBtnW ), nOffset ); + Button* pBtns[] = + { + &aOKButton, &aCancelButton, &aHelpButton, &aAutoCaptionButton, &aOptionButton + }; + Button** pCurrent = pBtns; + for ( sal_uInt32 i = 0; i < sizeof( pBtns ) / sizeof( pBtns[ 0 ] ); ++i, ++pCurrent ) + { + aNewSize = (*pCurrent)->GetSizePixel(); + aNewSize.Width() += nDelta; + (*pCurrent)->SetSizePixel( aNewSize ); + } + // and the dialog + aNewSize = GetOutputSizePixel(); + aNewSize.Width() += nDelta; + SetOutputSizePixel( aNewSize ); + } +} + +SwCaptionDialog::~SwCaptionDialog() +{ + delete pMgr; +} +/* */ + + +SwSequenceOptionDialog::SwSequenceOptionDialog( Window *pParent, SwView &rV, + const String& rSeqFldType ) + : SvxStandardDialog( pParent, SW_RES(DLG_SEQUENCE_OPTION) ), + aFlHeader (this, SW_RES(FL_HEADER )), + aFtLevel (this, SW_RES(FT_LEVEL )), + aLbLevel (this, SW_RES(LB_LEVEL )), + aFtDelim (this, SW_RES(FT_SEPARATOR )), + aEdDelim (this, SW_RES(ED_SEPARATOR )), + aFlCatAndFrame (this, SW_RES(FL_CATANDFRAME)), + aFtCharStyle (this, SW_RES(FT_CHARSTYLE )), + aLbCharStyle (this, SW_RES(LB_CHARSTYLE )), + aApplyBorderAndShadowCB(this, SW_RES(CB_APPLYBAS)), + aFlCaptionOrder(this, SW_RES( FL_ORDER )), //#i61007# order of captions + aFtCaptionOrder(this, SW_RES( FT_ORDER )), + aLbCaptionOrder(this, SW_RES( LB_ORDER )), + aOKButton (this, SW_RES(BTN_OK )), + aCancelButton (this, SW_RES(BTN_CANCEL )), + aHelpButton (this, SW_RES(BTN_HELP )), + + rView( rV ), + aFldTypeName( rSeqFldType ) +{ + FreeResource(); + SwWrtShell &rSh = rView.GetWrtShell(); + + for( sal_uInt16 n = 0; n < MAXLEVEL; ++n ) + aLbLevel.InsertEntry( String::CreateFromInt32(n+1) ); + + SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType( + RES_SETEXPFLD, aFldTypeName ); + + sal_Unicode nLvl = MAXLEVEL; + String sDelim( String::CreateFromAscii( ": " ) ); + if( pFldType ) + { + sDelim = pFldType->GetDelimiter(); + nLvl = pFldType->GetOutlineLvl(); + } + + aLbLevel.SelectEntryPos( nLvl < MAXLEVEL ? nLvl + 1 : 0 ); + aEdDelim.SetText( sDelim ); + + ::FillCharStyleListBox( aLbCharStyle, rView.GetDocShell(), TRUE, TRUE ); + aLbCharStyle.SelectEntryPos( 0 ); +} + +SwSequenceOptionDialog::~SwSequenceOptionDialog() +{ +} + +void SwSequenceOptionDialog::Apply() +{ + SwWrtShell &rSh = rView.GetWrtShell(); + SwSetExpFieldType* pFldType = (SwSetExpFieldType*)rSh.GetFldType( + RES_SETEXPFLD, aFldTypeName ); + + sal_Int8 nLvl = (sal_Int8)( aLbLevel.GetSelectEntryPos() - 1); + sal_Unicode cDelim = aEdDelim.GetText().GetChar(0); + + sal_Bool bUpdate = sal_True; + if( pFldType ) + { + pFldType->SetDelimiter( cDelim ); + pFldType->SetOutlineLvl( nLvl ); + } + else if( aFldTypeName.Len() && nLvl < MAXLEVEL ) + { + // dann muessen wir das mal einfuegen + SwSetExpFieldType aFldType( rSh.GetDoc(), aFldTypeName, nsSwGetSetExpType::GSE_SEQ ); + aFldType.SetDelimiter( cDelim ); + aFldType.SetOutlineLvl( nLvl ); + rSh.InsertFldType( aFldType ); + } + else + bUpdate = sal_False; + + if( bUpdate ) + rSh.UpdateExpFlds(); +} + +/*-- 24.08.2004 16:13:53--------------------------------------------------- + + -----------------------------------------------------------------------*/ +String SwSequenceOptionDialog::GetCharacterStyle() const +{ + String sRet; + if(aLbCharStyle.GetSelectEntryPos()) + sRet = aLbCharStyle.GetSelectEntry(); + return sRet; +} + +/*-- 24.08.2004 16:14:00--------------------------------------------------- + + -----------------------------------------------------------------------*/ +void SwSequenceOptionDialog::SetCharacterStyle(const String& rStyle) +{ + aLbCharStyle.SelectEntryPos(0); + aLbCharStyle.SelectEntry(rStyle); +} + +long SwCaptionDialog::CategoryBox::PreNotify( NotifyEvent& rNEvt ) +{ + long nHandled = 0; + if( rNEvt.GetType() == EVENT_KEYINPUT && + rNEvt.GetKeyEvent()->GetCharCode() ) + { + const KeyEvent* pEvent = rNEvt.GetKeyEvent(); + const KeyCode& rKeyCode = pEvent->GetKeyCode(); + USHORT nTmpCode = rKeyCode.GetFullCode() & ~KEY_ALLMODTYPE; + + if(nTmpCode != KEY_BACKSPACE && nTmpCode != KEY_RETURN + && nTmpCode != KEY_TAB && nTmpCode != KEY_ESCAPE) + { + String sKey( pEvent->GetCharCode() ), sName( GetText() ); + Selection aSel( GetSelection() ); + aSel.Justify(); + if( aSel.Len() ) + sName.Erase( (xub_StrLen)aSel.Min(), (xub_StrLen)aSel.Len() ); + sName.Insert( sKey, (xub_StrLen)aSel.Min() ); + if( !SwCalc::IsValidVarName( sName )) + nHandled = 1; + } + } + if(!nHandled) + nHandled = ComboBox::PreNotify( rNEvt ); + return nHandled; +} +/*-- 01.11.2007 10:45:51--------------------------------------------------- + //#i61007# order of captions + -----------------------------------------------------------------------*/ +void lcl_MoveH( Window& rWin, sal_Int32 nMove ) +{ + Point aPos( rWin.GetPosPixel() ); + aPos.Y() += nMove; + rWin.SetPosPixel(aPos); +} +void SwCaptionDialog::ApplyCaptionOrder() +{ + //have the settings changed? + bool bVisible = aNumberingSeparatorED.IsVisible() != 0; + if( bOrderNumberingFirst != bVisible ) + { + sal_Int32 nDiff = aPosBox.GetPosPixel().Y() - aSepEdit.GetPosPixel().Y(); + + aNumberingSeparatorFT.Show( bOrderNumberingFirst ); + aNumberingSeparatorED.Show( bOrderNumberingFirst ); + if( !bOrderNumberingFirst ) + { + nDiff = -nDiff; + } + lcl_MoveH( aCategoryText, 2 * nDiff); + lcl_MoveH( aFormatText, -nDiff ); + lcl_MoveH( aFormatBox, -nDiff ); + lcl_MoveH( aCategoryBox, 2 * nDiff); + lcl_MoveH( aSepText, nDiff ); + lcl_MoveH( aSepEdit, nDiff ); + lcl_MoveH( aPosText, nDiff ); + lcl_MoveH( aPosBox, nDiff ); + lcl_MoveH( aPrevWin, nDiff ); + Size aDlgSize( GetSizePixel() ); + aDlgSize.Height() += nDiff; + SetSizePixel( aDlgSize ); + } +} |