Files
libreoffice/sw/source/ui/fldui/fldfunc.cxx
Rüdiger Timm 0eb189dbd9 INTEGRATION: CWS tune03 (1.13.70); FILE MERGED
2004/07/19 19:11:15 mhu 1.13.70.1: #i29979# Added SW_DLLPUBLIC/PRIVATE (see swdllapi.h) to exported symbols/classes.
2004-08-23 07:53:11 +00:00

803 lines
24 KiB
C++

/*************************************************************************
*
* $RCSfile: fldfunc.cxx,v $
*
* $Revision: 1.14 $
*
* last change: $Author: rt $ $Date: 2004-08-23 08:53:11 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc., October, 2000
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2000 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* =================================================
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 (the "License"); You may not use this file
* except in compliance with the License. You may obtain a copy of the
* License at http://www.openoffice.org/license.html.
*
* Software provided under this License is provided on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
* See the License for the specific provisions governing your rights and
* obligations concerning the Software.
*
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
*
* Copyright: 2000 by Sun Microsystems, Inc.
*
* All Rights Reserved.
*
* Contributor(s): _______________________________________
*
*
************************************************************************/
#ifdef SW_DLLIMPLEMENTATION
#undef SW_DLLIMPLEMENTATION
#endif
#pragma hdrstop
#ifndef _SFXAPP_HXX //autogen
#include <sfx2/app.hxx>
#endif
#ifndef _BASMGR_HXX //autogen
#include <basic/basmgr.hxx>
#endif
#ifndef _SB_SBSTAR_HXX //autogen
#include <basic/sbstar.hxx>
#endif
#ifndef _SB_SBMOD_HXX //autogen
#include <basic/sbmod.hxx>
#endif
#ifndef _SWDOCSH_HXX //autogen
#include <docsh.hxx>
#endif
#ifndef _SWTYPES_HXX
#include <swtypes.hxx>
#endif
#ifndef _GLOBALS_HRC
#include <globals.hrc>
#endif
#ifndef _FLDBAS_HXX
#include <fldbas.hxx>
#endif
#ifndef _DOCUFLD_HXX
#include <docufld.hxx>
#endif
#ifndef _VIEW_HXX
#include <view.hxx>
#endif
#ifndef _WRTSH_HXX
#include <wrtsh.hxx>
#endif
#ifndef _SWMODULE_HXX
#include <swmodule.hxx>
#endif
#ifndef _FLDFUNC_HXX
#include <fldfunc.hxx>
#endif
#ifndef _FLDDROPDOWN_HXX
#include <flddropdown.hxx>
#endif
#ifndef _FLDUI_HRC
#include <fldui.hrc>
#endif
#ifndef _FLDTDLG_HRC
#include <fldtdlg.hrc>
#endif
#define USER_DATA_VERSION_1 "1"
#define USER_DATA_VERSION USER_DATA_VERSION_1
using com::sun::star::uno::Sequence;
using rtl::OUString;
/*--------------------------------------------------------------------
Beschreibung:
--------------------------------------------------------------------*/
SwFldFuncPage::SwFldFuncPage(Window* pParent, const SfxItemSet& rCoreSet ) :
SwFldPage( pParent, SW_RES( TP_FLD_FUNC ), rCoreSet ),
aTypeFT (this, SW_RES(FT_FUNCTYPE)),
aTypeLB (this, SW_RES(LB_FUNCTYPE)),
aSelectionFT(this, SW_RES(FT_FUNCSELECTION)),
aSelectionLB(this, SW_RES(LB_FUNCSELECTION)),
aFormatFT (this, SW_RES(FT_FUNCFORMAT)),
aFormatLB (this, SW_RES(LB_FUNCFORMAT)),
aNameFT (this, SW_RES(FT_FUNCNAME)),
aNameED (this, SW_RES(ED_FUNCNAME)),
aValueFT (this, SW_RES(FT_FUNCVALUE)),
aValueED (this, SW_RES(ED_FUNCVALUE)),
aCond1FT (this, SW_RES(FT_FUNCCOND1)),
aCond1ED (this, SW_RES(ED_FUNCCOND1)),
aCond2FT (this, SW_RES(FT_FUNCCOND2)),
aCond2ED (this, SW_RES(ED_FUNCCOND2)),
aMacroBT (this, SW_RES(BT_FUNCMACRO)),
aListItemFT( this, ResId( FT_LISTITEM )),
aListItemED( this, ResId( ED_LISTITEM )),
aListAddPB( this, ResId( PB_LISTADD )),
aListItemsFT( this, ResId( FT_LISTITEMS )),
aListItemsLB( this, ResId( LB_LISTITEMS )),
aListRemovePB( this, ResId( PB_LISTREMOVE )),
aListUpPB( this, ResId( PB_LISTUP )),
aListDownPB( this, ResId( PB_LISTDOWN )),
aListNameFT( this, ResId( FT_LISTNAME )),
aListNameED( this, ResId( ED_LISTNAME )),
bDropDownLBChanged(false)
{
FreeResource();
aNameED.SetPosPixel(Point(aNameED.GetPosPixel().X(), aFormatLB.GetPosPixel().Y()));
aNameED.SetModifyHdl(LINK(this, SwFldFuncPage, ModifyHdl));
sOldValueFT = aValueFT.GetText();
sOldNameFT = aNameFT.GetText();
aCond1ED.ShowBrackets(FALSE);
aCond2ED.ShowBrackets(FALSE);
// SwWrtShell* pSh = (SwWrtShell*)ViewShell::GetCurrShell();
}
/*--------------------------------------------------------------------
Beschreibung:
--------------------------------------------------------------------*/
SwFldFuncPage::~SwFldFuncPage()
{
}
/*--------------------------------------------------------------------
Beschreibung:
--------------------------------------------------------------------*/
void SwFldFuncPage::Reset(const SfxItemSet& rSet)
{
SavePos(&aTypeLB);
Init(); // Allgemeine initialisierung
aTypeLB.SetUpdateMode(FALSE);
aTypeLB.Clear();
USHORT nPos, nTypeId;
BOOL bPage = FALSE;
if (!IsFldEdit())
{
// TypeListBox initialisieren
const SwFldGroupRgn& rRg = GetFldMgr().GetGroupRange(IsFldDlgHtmlMode(), GetGroup());
// Typ-Listbox fuellen
for(short i = rRg.nStart; i < rRg.nEnd; ++i)
{
nTypeId = GetFldMgr().GetTypeId(i);
nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(i));
aTypeLB.SetEntryData(nPos, (void*)nTypeId);
}
}
else
{
nTypeId = GetCurField()->GetTypeId();
nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(GetFldMgr().GetPos(nTypeId)));
aTypeLB.SetEntryData(nPos, (void*)nTypeId);
if (nTypeId == TYP_MACROFLD)
{
String sName(GetCurField()->GetPar1());
GetFldMgr().SetMacroPath(sName);
}
}
// alte Pos selektieren
RestorePos(&aTypeLB);
aTypeLB.SetDoubleClickHdl (LINK(this, SwFldFuncPage, InsertHdl));
aTypeLB.SetSelectHdl (LINK(this, SwFldFuncPage, TypeHdl));
aSelectionLB.SetSelectHdl (LINK(this, SwFldFuncPage, SelectHdl));
aSelectionLB.SetDoubleClickHdl (LINK(this, SwFldFuncPage, InsertMacroHdl));
aFormatLB.SetDoubleClickHdl (LINK(this, SwFldFuncPage, InsertHdl));
aMacroBT.SetClickHdl (LINK(this, SwFldFuncPage, MacroHdl));
Link aListModifyLk( LINK(this, SwFldFuncPage, ListModifyHdl));
aListAddPB.SetClickHdl(aListModifyLk);
aListRemovePB.SetClickHdl(aListModifyLk);
aListUpPB.SetClickHdl(aListModifyLk);
aListDownPB.SetClickHdl(aListModifyLk);
aListItemED.SetReturnActionLink(aListModifyLk);
Link aListEnableLk = LINK(this, SwFldFuncPage, ListEnableHdl);
aListItemED.SetModifyHdl(aListEnableLk);
aListItemsLB.SetSelectHdl(aListEnableLk);
if( !IsRefresh() )
{
String sUserData = GetUserData();
if(sUserData.GetToken(0, ';').EqualsIgnoreCaseAscii(USER_DATA_VERSION_1))
{
String sVal = sUserData.GetToken(1, ';');
USHORT nVal = sVal.ToInt32();
if(nVal != USHRT_MAX)
{
for(USHORT i = 0; i < aTypeLB.GetEntryCount(); i++)
if(nVal == (USHORT)(ULONG)aTypeLB.GetEntryData(i))
{
aTypeLB.SelectEntryPos(i);
break;
}
}
}
}
TypeHdl(0);
aTypeLB.SetUpdateMode(TRUE);
if (IsFldEdit())
{
aNameED.SaveValue();
aValueED.SaveValue();
aCond1ED.SaveValue();
aCond2ED.SaveValue();
nOldFormat = GetCurField()->GetFormat();
}
}
/*--------------------------------------------------------------------
Beschreibung:
--------------------------------------------------------------------*/
IMPL_LINK( SwFldFuncPage, TypeHdl, ListBox *, pBox )
{
// Alte ListBoxPos sichern
const USHORT nOld = GetTypeSel();
// Aktuelle ListBoxPos
SetTypeSel(aTypeLB.GetSelectEntryPos());
if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND)
{
SetTypeSel(0);
aTypeLB.SelectEntryPos(0);
}
if (nOld != GetTypeSel())
{
USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
// Auswahl-Listbox fuellen
UpdateSubType();
// Format-Listbox fuellen
aFormatLB.Clear();
USHORT nSize = GetFldMgr().GetFormatCount(nTypeId, FALSE, IsFldDlgHtmlMode());
for (USHORT i = 0; i < nSize; i++)
{
USHORT nPos = aFormatLB.InsertEntry(GetFldMgr().GetFormatStr(nTypeId, i));
aFormatLB.SetEntryData( nPos, (void*)GetFldMgr().GetFormatId( nTypeId, i ) );
}
if (nSize)
{
if (IsFldEdit() && nTypeId == TYP_JUMPEDITFLD)
aFormatLB.SelectEntry(SW_RESSTR(FMT_MARK_BEGIN + (USHORT)GetCurField()->GetFormat()));
if (!aFormatLB.GetSelectEntryCount())
aFormatLB.SelectEntryPos(0);
}
BOOL bValue = FALSE, bName = FALSE, bMacro = FALSE, bInsert = TRUE;
BOOL bShowSelection = FALSE;
BOOL bFormat = nSize != 0;
// fuer Conditional Text zwei Controls
BOOL bDropDown = TYP_DROPDOWN == nTypeId;
BOOL bCondTxtFld = TYP_CONDTXTFLD == nTypeId;
aCond1FT.Show(!bDropDown && bCondTxtFld);
aCond1ED.Show(!bDropDown && bCondTxtFld);
aCond2FT.Show(!bDropDown && bCondTxtFld);
aCond2ED.Show(!bDropDown && bCondTxtFld);
aValueFT.Show(!bDropDown && !bCondTxtFld);
aValueED.Show(!bDropDown && !bCondTxtFld);
aMacroBT.Show(!bDropDown);
aNameED.Show(!bDropDown);
aListItemFT.Show(bDropDown);
aListItemED.Show(bDropDown);
aListAddPB.Show(bDropDown);
aListItemsFT.Show(bDropDown);
aListItemsLB.Show(bDropDown);
aListRemovePB.Show(bDropDown);
aListUpPB.Show(bDropDown);
aListDownPB.Show(bDropDown);
aListNameFT.Show(bDropDown);
aListNameED.Show(bDropDown);
aNameED.SetDropEnable(FALSE);
if (IsFldEdit())
{
if(bDropDown)
{
const SwDropDownField* pDrop = (const SwDropDownField*)GetCurField();
Sequence<OUString> aItems = pDrop->GetItemSequence();
const OUString* pArray = aItems.getConstArray();
aListItemsLB.Clear();
for(sal_Int32 i = 0; i < aItems.getLength(); i++)
aListItemsLB.InsertEntry(pArray[i]);
aListItemsLB.SelectEntry(pDrop->GetSelectedItem());
aListNameED.SetText(pDrop->GetPar2());
aListNameED.SaveValue();
bDropDownLBChanged = false;
}
else
{
aNameED.SetText(GetCurField()->GetPar1());
aValueED.SetText(GetCurField()->GetPar2());
}
}
else
{
aNameED.SetText(aEmptyStr);
aValueED.SetText(aEmptyStr);
}
if(bDropDown)
ListEnableHdl(0);
if( aNameFT.GetText() != sOldNameFT )
aNameFT.SetText(sOldNameFT);
if (aValueFT.GetText() != sOldValueFT)
aValueFT.SetText(sOldValueFT);
switch (nTypeId)
{
case TYP_MACROFLD:
bMacro = TRUE;
if (GetFldMgr().GetMacroPath().Len())
bValue = TRUE;
else
bInsert = FALSE;
aNameFT.SetText(SW_RESSTR(STR_MACNAME));
aValueFT.SetText(SW_RESSTR(STR_PROMPT));
aNameED.SetText(GetFldMgr().GetMacroName());
break;
case TYP_HIDDENPARAFLD:
aNameFT.SetText(SW_RESSTR(STR_COND));
aNameED.SetDropEnable(TRUE);
bName = TRUE;
break;
case TYP_HIDDENTXTFLD:
aNameFT.SetText(SW_RESSTR(STR_COND));
aNameED.SetDropEnable(TRUE);
aValueFT.SetText(SW_RESSTR(STR_INSTEXT));
if (!IsFldEdit() )
aValueED.SetText(::GetActiveView()->GetWrtShell().GetSelTxt());
bName = bValue = TRUE;
break;
case TYP_CONDTXTFLD:
aNameFT.SetText(SW_RESSTR(STR_COND));
aNameED.SetDropEnable(TRUE);
if (IsFldEdit())
{
aCond1ED.SetText(GetCurField()->GetPar2().GetToken(0, '|'));
aCond2ED.SetText(GetCurField()->GetPar2().GetToken(1, '|'));
}
bName = bValue = TRUE;
break;
case TYP_JUMPEDITFLD:
aNameFT.SetText(SW_RESSTR(STR_JUMPEDITFLD));
aValueFT.SetText(SW_RESSTR(STR_PROMPT));
bName = bValue = TRUE;
break;
case TYP_INPUTFLD:
aValueFT.SetText(SW_RESSTR(STR_PROMPT));
bValue = TRUE;
// bShowSelection = TRUE;
break;
case TYP_COMBINED_CHARS:
{
aNameFT.SetText(SW_RESSTR(STR_COMBCHRS_FT));
aNameED.SetDropEnable(TRUE);
bName = TRUE;
const USHORT nLen = aNameED.GetText().Len();
if( !nLen || nLen > MAX_COMBINED_CHARACTERS )
bInsert = FALSE;
}
break;
case TYP_DROPDOWN :
break;
default:
break;
}
if (bShowSelection)
{
aSelectionLB.Show();
aSelectionFT.Show();
aFormatLB.Hide();
aFormatFT.Hide();
}
else
{
aFormatLB.Show();
aFormatFT.Show();
aSelectionLB.Hide();
aSelectionFT.Hide();
}
aFormatLB.Enable(bFormat);
aFormatFT.Enable(bFormat);
aNameFT.Enable(bName);
aNameED.Enable(bName);
aValueFT.Enable(bValue);
aValueED.Enable(bValue);
aMacroBT.Enable(bMacro);
EnableInsert( bInsert );
}
return 0;
}
/*--------------------------------------------------------------------
Beschreibung:
--------------------------------------------------------------------*/
IMPL_LINK( SwFldFuncPage, SelectHdl, ListBox *, pBox )
{
USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
if( TYP_MACROFLD == nTypeId )
aNameED.SetText( aSelectionLB.GetSelectEntry() );
return 0;
}
/*--------------------------------------------------------------------
Beschreibung:
--------------------------------------------------------------------*/
IMPL_LINK( SwFldFuncPage, InsertMacroHdl, ListBox *, pBox )
{
SelectHdl();
InsertHdl();
return 0;
}
/* -----------------16.06.2003 16:24-----------------
--------------------------------------------------*/
IMPL_LINK( SwFldFuncPage, ListModifyHdl, Control*, pControl)
{
aListItemsLB.SetUpdateMode(FALSE);
if(pControl == &aListAddPB ||
pControl == &aListItemED && aListAddPB.IsEnabled())
{
String sEntry(aListItemED.GetText());
aListItemsLB.InsertEntry(sEntry);
aListItemsLB.SelectEntry(sEntry);
}
else if(aListItemsLB.GetSelectEntryCount())
{
USHORT nSelPos = aListItemsLB.GetSelectEntryPos();
if(pControl == &aListRemovePB)
{
aListItemsLB.RemoveEntry(nSelPos);
aListItemsLB.SelectEntryPos(nSelPos ? nSelPos - 1 : 0);
}
else if(pControl == &aListUpPB)
{
if(nSelPos)
{
String sEntry = aListItemsLB.GetSelectEntry();
aListItemsLB.RemoveEntry(nSelPos);
nSelPos--;
aListItemsLB.InsertEntry(sEntry, nSelPos);
aListItemsLB.SelectEntryPos(nSelPos);
}
}
else if(pControl == &aListDownPB)
{
if(nSelPos < aListItemsLB.GetEntryCount() - 1)
{
String sEntry = aListItemsLB.GetSelectEntry();
aListItemsLB.RemoveEntry(nSelPos);
nSelPos++;
aListItemsLB.InsertEntry(sEntry, nSelPos);
aListItemsLB.SelectEntryPos(nSelPos);
}
}
}
bDropDownLBChanged = true;
aListItemsLB.SetUpdateMode(TRUE);
ListEnableHdl(0);
return 0;
}
/* -----------------17.06.2003 08:36-----------------
--------------------------------------------------*/
IMPL_LINK( SwFldFuncPage, ListEnableHdl, void*, EMPTYARG)
{
//enable "Add" button when text is in the Edit that's not already member of the box
aListAddPB.Enable(aListItemED.GetText().Len() &&
LISTBOX_ENTRY_NOTFOUND == aListItemsLB.GetEntryPos(aListItemED.GetText()));
BOOL bEnableButtons = aListItemsLB.GetSelectEntryCount() > 0;
aListRemovePB.Enable(bEnableButtons);
aListUpPB.Enable(bEnableButtons && (aListItemsLB.GetSelectEntryPos() > 0));
aListDownPB.Enable(bEnableButtons &&
(aListItemsLB.GetSelectEntryPos() < (aListItemsLB.GetEntryCount() - 1)));
return 0;
}
/*--------------------------------------------------------------------
Beschreibung: Typen in der SelectionBox erneuern
--------------------------------------------------------------------*/
void SwFldFuncPage::UpdateSubType()
{
USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
// Auswahl-Listbox fuellen
aSelectionLB.SetUpdateMode(FALSE);
aSelectionLB.Clear();
SvStringsDtor aLst;
GetFldMgr().GetSubTypes(nTypeId, aLst);
USHORT nCount = aLst.Count();
for (USHORT i = 0; i < nCount; ++i)
{
USHORT nPos = aSelectionLB.InsertEntry(*aLst[i]);
aSelectionLB.SetEntryData(nPos, (void*)i);
}
BOOL bEnable = nCount != 0;
aSelectionLB.Enable( bEnable );
aSelectionFT.Enable( bEnable );
if (bEnable)
{
aSelectionLB.SelectEntryPos(0);
}
if (nTypeId == TYP_MACROFLD)
{
BOOL bHasMacro = GetFldMgr().GetMacroPath().Len() != 0;
if (bHasMacro)
{
aNameED.SetText(GetFldMgr().GetMacroName());
aValueFT.Enable();
aValueED.Enable();
}
EnableInsert(bHasMacro);
}
aSelectionLB.SetUpdateMode(TRUE);
}
/*--------------------------------------------------------------------
Beschreibung: MacroBrowser aufrufen, Listbox mit Macros fuellen
--------------------------------------------------------------------*/
IMPL_LINK( SwFldFuncPage, MacroHdl, Button *, pBtn )
{
Window* pDefModalDlgParent = Application::GetDefDialogParent();
Application::SetDefDialogParent( pBtn );
String sMacro(TurnMacroString(aNameED.GetText()));
while (sMacro.SearchAndReplace('.', ';') != STRING_NOTFOUND);
if (GetFldMgr().ChooseMacro(sMacro))
UpdateSubType();
Application::SetDefDialogParent( pDefModalDlgParent );
return 0;
}
/*--------------------------------------------------------------------
Beschreibung:
--------------------------------------------------------------------*/
BOOL SwFldFuncPage::FillItemSet(SfxItemSet& rSet)
{
BOOL bPage = FALSE;
USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
USHORT nSubType = 0;
ULONG nFormat = aFormatLB.GetSelectEntryPos();
if(nFormat == LISTBOX_ENTRY_NOTFOUND)
nFormat = 0;
else
nFormat = (ULONG)aFormatLB.GetEntryData((USHORT)nFormat);
String aVal(aValueED.GetText());
String aName(aNameED.GetText());
switch(nTypeId)
{
case TYP_INPUTFLD:
nSubType = INP_TXT;
// to prevent removal of CR/LF restore old content
if(!aNameED.IsModified() && IsFldEdit())
aName = GetCurField()->GetPar1();
break;
case TYP_MACROFLD:
// use the full script URL, not the name in the Edit control
aName = GetFldMgr().GetMacroPath();
break;
case TYP_CONDTXTFLD:
aVal = aCond1ED.GetText();
aVal += '|';
aVal += aCond2ED.GetText();
break;
case TYP_DROPDOWN :
{
aName = aListNameED.GetText();
for(USHORT i = 0; i < aListItemsLB.GetEntryCount(); i++)
{
if(i)
aVal += DB_DELIM;
aVal += aListItemsLB.GetEntry(i);
}
}
break;
default:
break;
}
if (!IsFldEdit() ||
aNameED.GetSavedValue() != aNameED.GetText() ||
aValueED.GetSavedValue() != aValueED.GetText() ||
aCond1ED.GetSavedValue() != aCond1ED.GetText() ||
aCond2ED.GetSavedValue() != aCond2ED.GetText() ||
aListNameED.GetSavedValue() != aListNameED.GetText() ||
bDropDownLBChanged ||
nOldFormat != nFormat)
{
InsertFld( nTypeId, nSubType, aName, aVal, nFormat );
}
ModifyHdl(); // Insert ggf enablen/disablen
return FALSE;
}
/*--------------------------------------------------------------------
Beschreibung:
--------------------------------------------------------------------*/
String SwFldFuncPage::TurnMacroString(const String &rMacro)
{
if (rMacro.Len())
{
// Inhalt von aName umdrehen
String sTmp, sBuf;
USHORT nPos = 0;
for (USHORT i = 0; i < 4 && nPos != STRING_NOTFOUND; i++)
{
if (i == 3)
sTmp = rMacro.Copy(nPos);
else
sTmp = rMacro.GetToken(0, '.', nPos);
if( sBuf.Len() )
sTmp += '.';
sBuf.Insert( sTmp, 0 );
}
return sBuf;
}
return rMacro;
}
/*--------------------------------------------------------------------
Beschreibung:
--------------------------------------------------------------------*/
SfxTabPage* SwFldFuncPage::Create( Window* pParent,
const SfxItemSet& rAttrSet )
{
return ( new SwFldFuncPage( pParent, rAttrSet ) );
}
/*--------------------------------------------------------------------
Beschreibung:
--------------------------------------------------------------------*/
USHORT SwFldFuncPage::GetGroup()
{
return GRP_FKT;
}
/* -----------------12.01.99 10:09-------------------
*
* --------------------------------------------------*/
void SwFldFuncPage::FillUserData()
{
String sData( String::CreateFromAscii(
RTL_CONSTASCII_STRINGPARAM( USER_DATA_VERSION )));
sData += ';';
USHORT nTypeSel = aTypeLB.GetSelectEntryPos();
if( LISTBOX_ENTRY_NOTFOUND == nTypeSel )
nTypeSel = USHRT_MAX;
else
nTypeSel = (ULONG)aTypeLB.GetEntryData( nTypeSel );
sData += String::CreateFromInt32( nTypeSel );
SetUserData(sData);
}
IMPL_LINK( SwFldFuncPage, ModifyHdl, Edit *, EMPTYARG )
{
String aName(aNameED.GetText());
const USHORT nLen = aName.Len();
BOOL bEnable = TRUE;
USHORT nTypeId = (USHORT)(ULONG)aTypeLB.GetEntryData(GetTypeSel());
if( TYP_COMBINED_CHARS == nTypeId &&
(!nLen || nLen > MAX_COMBINED_CHARACTERS ))
bEnable = FALSE;
EnableInsert( bEnable );
return 0;
}