xref: /trunk/main/sw/source/ui/fldui/fldfunc.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
29*cdf0e10cSrcweir #include "precompiled_sw.hxx"
30*cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION
31*cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION
32*cdf0e10cSrcweir #endif
33*cdf0e10cSrcweir 
34*cdf0e10cSrcweir 
35*cdf0e10cSrcweir #include <sfx2/app.hxx>
36*cdf0e10cSrcweir #include <basic/basmgr.hxx>
37*cdf0e10cSrcweir #include <basic/sbmod.hxx>
38*cdf0e10cSrcweir #include <docsh.hxx>
39*cdf0e10cSrcweir #include <swtypes.hxx>
40*cdf0e10cSrcweir #ifndef _GLOBALS_HRC
41*cdf0e10cSrcweir #include <globals.hrc>
42*cdf0e10cSrcweir #endif
43*cdf0e10cSrcweir #include <fldbas.hxx>
44*cdf0e10cSrcweir #include <docufld.hxx>
45*cdf0e10cSrcweir #ifndef _VIEW_HXX
46*cdf0e10cSrcweir #include <view.hxx>
47*cdf0e10cSrcweir #endif
48*cdf0e10cSrcweir #include <wrtsh.hxx>
49*cdf0e10cSrcweir #include <swmodule.hxx>
50*cdf0e10cSrcweir #ifndef _FLDFUNC_HXX
51*cdf0e10cSrcweir #include <fldfunc.hxx>
52*cdf0e10cSrcweir #endif
53*cdf0e10cSrcweir #include <flddropdown.hxx>
54*cdf0e10cSrcweir #ifndef _FLDUI_HRC
55*cdf0e10cSrcweir #include <fldui.hrc>
56*cdf0e10cSrcweir #endif
57*cdf0e10cSrcweir #ifndef _FLDTDLG_HRC
58*cdf0e10cSrcweir #include <fldtdlg.hrc>
59*cdf0e10cSrcweir #endif
60*cdf0e10cSrcweir 
61*cdf0e10cSrcweir #define USER_DATA_VERSION_1 "1"
62*cdf0e10cSrcweir #define USER_DATA_VERSION USER_DATA_VERSION_1
63*cdf0e10cSrcweir 
64*cdf0e10cSrcweir using namespace ::com::sun::star;
65*cdf0e10cSrcweir 
66*cdf0e10cSrcweir using rtl::OUString;
67*cdf0e10cSrcweir 
68*cdf0e10cSrcweir /*--------------------------------------------------------------------
69*cdf0e10cSrcweir     Beschreibung:
70*cdf0e10cSrcweir  --------------------------------------------------------------------*/
71*cdf0e10cSrcweir 
72*cdf0e10cSrcweir SwFldFuncPage::SwFldFuncPage(Window* pParent, const SfxItemSet& rCoreSet ) :
73*cdf0e10cSrcweir     SwFldPage( pParent, SW_RES( TP_FLD_FUNC ), rCoreSet ),
74*cdf0e10cSrcweir 
75*cdf0e10cSrcweir     aTypeFT     (this, SW_RES(FT_FUNCTYPE)),
76*cdf0e10cSrcweir     aTypeLB     (this, SW_RES(LB_FUNCTYPE)),
77*cdf0e10cSrcweir     aSelectionFT(this, SW_RES(FT_FUNCSELECTION)),
78*cdf0e10cSrcweir     aSelectionLB(this, SW_RES(LB_FUNCSELECTION)),
79*cdf0e10cSrcweir     aFormatFT   (this, SW_RES(FT_FUNCFORMAT)),
80*cdf0e10cSrcweir     aFormatLB   (this, SW_RES(LB_FUNCFORMAT)),
81*cdf0e10cSrcweir     aNameFT     (this, SW_RES(FT_FUNCNAME)),
82*cdf0e10cSrcweir     aNameED     (this, SW_RES(ED_FUNCNAME)),
83*cdf0e10cSrcweir     aValueFT    (this, SW_RES(FT_FUNCVALUE)),
84*cdf0e10cSrcweir     aValueED    (this, SW_RES(ED_FUNCVALUE)),
85*cdf0e10cSrcweir     aCond1FT    (this, SW_RES(FT_FUNCCOND1)),
86*cdf0e10cSrcweir     aCond1ED    (this, SW_RES(ED_FUNCCOND1)),
87*cdf0e10cSrcweir     aCond2FT    (this, SW_RES(FT_FUNCCOND2)),
88*cdf0e10cSrcweir     aCond2ED    (this, SW_RES(ED_FUNCCOND2)),
89*cdf0e10cSrcweir     aMacroBT    (this, SW_RES(BT_FUNCMACRO)),
90*cdf0e10cSrcweir     aListItemFT(    this, SW_RES( FT_LISTITEM    )),
91*cdf0e10cSrcweir     aListItemED(    this, SW_RES( ED_LISTITEM    )),
92*cdf0e10cSrcweir     aListAddPB(     this, SW_RES( PB_LISTADD     )),
93*cdf0e10cSrcweir     aListItemsFT(   this, SW_RES( FT_LISTITEMS   )),
94*cdf0e10cSrcweir     aListItemsLB(   this, SW_RES( LB_LISTITEMS   )),
95*cdf0e10cSrcweir     aListRemovePB(  this, SW_RES( PB_LISTREMOVE  )),
96*cdf0e10cSrcweir     aListUpPB(      this, SW_RES( PB_LISTUP      )),
97*cdf0e10cSrcweir     aListDownPB(    this, SW_RES( PB_LISTDOWN    )),
98*cdf0e10cSrcweir     aListNameFT(    this, SW_RES( FT_LISTNAME    )),
99*cdf0e10cSrcweir     aListNameED(    this, SW_RES( ED_LISTNAME    )),
100*cdf0e10cSrcweir     bDropDownLBChanged(false)
101*cdf0e10cSrcweir {
102*cdf0e10cSrcweir     FreeResource();
103*cdf0e10cSrcweir 
104*cdf0e10cSrcweir     aNameED.SetPosPixel(Point(aNameED.GetPosPixel().X(), aFormatLB.GetPosPixel().Y()));
105*cdf0e10cSrcweir 
106*cdf0e10cSrcweir     aNameED.SetModifyHdl(LINK(this, SwFldFuncPage, ModifyHdl));
107*cdf0e10cSrcweir 
108*cdf0e10cSrcweir     sOldValueFT = aValueFT.GetText();
109*cdf0e10cSrcweir     sOldNameFT = aNameFT.GetText();
110*cdf0e10cSrcweir 
111*cdf0e10cSrcweir     aCond1ED.ShowBrackets(sal_False);
112*cdf0e10cSrcweir     aCond2ED.ShowBrackets(sal_False);
113*cdf0e10cSrcweir 
114*cdf0e10cSrcweir //  SwWrtShell* pSh = (SwWrtShell*)ViewShell::GetCurrShell();
115*cdf0e10cSrcweir }
116*cdf0e10cSrcweir 
117*cdf0e10cSrcweir /*--------------------------------------------------------------------
118*cdf0e10cSrcweir     Beschreibung:
119*cdf0e10cSrcweir  --------------------------------------------------------------------*/
120*cdf0e10cSrcweir 
121*cdf0e10cSrcweir SwFldFuncPage::~SwFldFuncPage()
122*cdf0e10cSrcweir {
123*cdf0e10cSrcweir }
124*cdf0e10cSrcweir 
125*cdf0e10cSrcweir /*--------------------------------------------------------------------
126*cdf0e10cSrcweir     Beschreibung:
127*cdf0e10cSrcweir  --------------------------------------------------------------------*/
128*cdf0e10cSrcweir 
129*cdf0e10cSrcweir void SwFldFuncPage::Reset(const SfxItemSet& )
130*cdf0e10cSrcweir {
131*cdf0e10cSrcweir     SavePos(&aTypeLB);
132*cdf0e10cSrcweir     Init(); // Allgemeine initialisierung
133*cdf0e10cSrcweir 
134*cdf0e10cSrcweir     aTypeLB.SetUpdateMode(sal_False);
135*cdf0e10cSrcweir     aTypeLB.Clear();
136*cdf0e10cSrcweir 
137*cdf0e10cSrcweir     sal_uInt16 nPos, nTypeId;
138*cdf0e10cSrcweir 
139*cdf0e10cSrcweir     if (!IsFldEdit())
140*cdf0e10cSrcweir     {
141*cdf0e10cSrcweir         // TypeListBox initialisieren
142*cdf0e10cSrcweir         const SwFldGroupRgn& rRg = GetFldMgr().GetGroupRange(IsFldDlgHtmlMode(), GetGroup());
143*cdf0e10cSrcweir 
144*cdf0e10cSrcweir         // Typ-Listbox fuellen
145*cdf0e10cSrcweir         for(short i = rRg.nStart; i < rRg.nEnd; ++i)
146*cdf0e10cSrcweir         {
147*cdf0e10cSrcweir             nTypeId = GetFldMgr().GetTypeId(i);
148*cdf0e10cSrcweir             nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(i));
149*cdf0e10cSrcweir             aTypeLB.SetEntryData(nPos, reinterpret_cast<void*>(nTypeId));
150*cdf0e10cSrcweir         }
151*cdf0e10cSrcweir     }
152*cdf0e10cSrcweir     else
153*cdf0e10cSrcweir     {
154*cdf0e10cSrcweir         nTypeId = GetCurField()->GetTypeId();
155*cdf0e10cSrcweir         nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(GetFldMgr().GetPos(nTypeId)));
156*cdf0e10cSrcweir         aTypeLB.SetEntryData(nPos, reinterpret_cast<void*>(nTypeId));
157*cdf0e10cSrcweir 
158*cdf0e10cSrcweir         if (nTypeId == TYP_MACROFLD)
159*cdf0e10cSrcweir         {
160*cdf0e10cSrcweir             String sName(GetCurField()->GetPar1());
161*cdf0e10cSrcweir             GetFldMgr().SetMacroPath(sName);
162*cdf0e10cSrcweir         }
163*cdf0e10cSrcweir     }
164*cdf0e10cSrcweir 
165*cdf0e10cSrcweir     // alte Pos selektieren
166*cdf0e10cSrcweir     RestorePos(&aTypeLB);
167*cdf0e10cSrcweir 
168*cdf0e10cSrcweir     aTypeLB.SetDoubleClickHdl       (LINK(this, SwFldFuncPage, InsertHdl));
169*cdf0e10cSrcweir     aTypeLB.SetSelectHdl            (LINK(this, SwFldFuncPage, TypeHdl));
170*cdf0e10cSrcweir     aSelectionLB.SetSelectHdl       (LINK(this, SwFldFuncPage, SelectHdl));
171*cdf0e10cSrcweir     aSelectionLB.SetDoubleClickHdl  (LINK(this, SwFldFuncPage, InsertMacroHdl));
172*cdf0e10cSrcweir     aFormatLB.SetDoubleClickHdl     (LINK(this, SwFldFuncPage, InsertHdl));
173*cdf0e10cSrcweir     aMacroBT.SetClickHdl            (LINK(this, SwFldFuncPage, MacroHdl));
174*cdf0e10cSrcweir     Link aListModifyLk( LINK(this, SwFldFuncPage, ListModifyHdl));
175*cdf0e10cSrcweir     aListAddPB.SetClickHdl(aListModifyLk);
176*cdf0e10cSrcweir     aListRemovePB.SetClickHdl(aListModifyLk);
177*cdf0e10cSrcweir     aListUpPB.SetClickHdl(aListModifyLk);
178*cdf0e10cSrcweir     aListDownPB.SetClickHdl(aListModifyLk);
179*cdf0e10cSrcweir     aListItemED.SetReturnActionLink(aListModifyLk);
180*cdf0e10cSrcweir     Link aListEnableLk = LINK(this, SwFldFuncPage, ListEnableHdl);
181*cdf0e10cSrcweir     aListItemED.SetModifyHdl(aListEnableLk);
182*cdf0e10cSrcweir     aListItemsLB.SetSelectHdl(aListEnableLk);
183*cdf0e10cSrcweir 
184*cdf0e10cSrcweir     if( !IsRefresh() )
185*cdf0e10cSrcweir     {
186*cdf0e10cSrcweir         String sUserData = GetUserData();
187*cdf0e10cSrcweir         if(sUserData.GetToken(0, ';').EqualsIgnoreCaseAscii(USER_DATA_VERSION_1))
188*cdf0e10cSrcweir         {
189*cdf0e10cSrcweir             String sVal = sUserData.GetToken(1, ';');
190*cdf0e10cSrcweir             sal_uInt16 nVal = static_cast< sal_uInt16 >(sVal.ToInt32());
191*cdf0e10cSrcweir             if(nVal != USHRT_MAX)
192*cdf0e10cSrcweir             {
193*cdf0e10cSrcweir                 for(sal_uInt16 i = 0; i < aTypeLB.GetEntryCount(); i++)
194*cdf0e10cSrcweir                     if(nVal == (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(i))
195*cdf0e10cSrcweir                     {
196*cdf0e10cSrcweir                         aTypeLB.SelectEntryPos(i);
197*cdf0e10cSrcweir                         break;
198*cdf0e10cSrcweir                     }
199*cdf0e10cSrcweir             }
200*cdf0e10cSrcweir         }
201*cdf0e10cSrcweir     }
202*cdf0e10cSrcweir     TypeHdl(0);
203*cdf0e10cSrcweir 
204*cdf0e10cSrcweir     aTypeLB.SetUpdateMode(sal_True);
205*cdf0e10cSrcweir 
206*cdf0e10cSrcweir     if (IsFldEdit())
207*cdf0e10cSrcweir     {
208*cdf0e10cSrcweir         aNameED.SaveValue();
209*cdf0e10cSrcweir         aValueED.SaveValue();
210*cdf0e10cSrcweir         aCond1ED.SaveValue();
211*cdf0e10cSrcweir         aCond2ED.SaveValue();
212*cdf0e10cSrcweir         nOldFormat = GetCurField()->GetFormat();
213*cdf0e10cSrcweir     }
214*cdf0e10cSrcweir }
215*cdf0e10cSrcweir 
216*cdf0e10cSrcweir /*--------------------------------------------------------------------
217*cdf0e10cSrcweir     Beschreibung:
218*cdf0e10cSrcweir  --------------------------------------------------------------------*/
219*cdf0e10cSrcweir 
220*cdf0e10cSrcweir IMPL_LINK( SwFldFuncPage, TypeHdl, ListBox *, EMPTYARG )
221*cdf0e10cSrcweir {
222*cdf0e10cSrcweir     // Alte ListBoxPos sichern
223*cdf0e10cSrcweir     const sal_uInt16 nOld = GetTypeSel();
224*cdf0e10cSrcweir 
225*cdf0e10cSrcweir     // Aktuelle ListBoxPos
226*cdf0e10cSrcweir     SetTypeSel(aTypeLB.GetSelectEntryPos());
227*cdf0e10cSrcweir 
228*cdf0e10cSrcweir     if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND)
229*cdf0e10cSrcweir     {
230*cdf0e10cSrcweir         SetTypeSel(0);
231*cdf0e10cSrcweir         aTypeLB.SelectEntryPos(0);
232*cdf0e10cSrcweir     }
233*cdf0e10cSrcweir 
234*cdf0e10cSrcweir     if (nOld != GetTypeSel())
235*cdf0e10cSrcweir     {
236*cdf0e10cSrcweir         sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
237*cdf0e10cSrcweir 
238*cdf0e10cSrcweir         // Auswahl-Listbox fuellen
239*cdf0e10cSrcweir         UpdateSubType();
240*cdf0e10cSrcweir 
241*cdf0e10cSrcweir         // Format-Listbox fuellen
242*cdf0e10cSrcweir         aFormatLB.Clear();
243*cdf0e10cSrcweir 
244*cdf0e10cSrcweir         sal_uInt16 nSize = GetFldMgr().GetFormatCount(nTypeId, sal_False, IsFldDlgHtmlMode());
245*cdf0e10cSrcweir 
246*cdf0e10cSrcweir         for (sal_uInt16 i = 0; i < nSize; i++)
247*cdf0e10cSrcweir         {
248*cdf0e10cSrcweir             sal_uInt16 nPos = aFormatLB.InsertEntry(GetFldMgr().GetFormatStr(nTypeId, i));
249*cdf0e10cSrcweir             aFormatLB.SetEntryData( nPos, reinterpret_cast<void*>(GetFldMgr().GetFormatId( nTypeId, i )) );
250*cdf0e10cSrcweir         }
251*cdf0e10cSrcweir 
252*cdf0e10cSrcweir         if (nSize)
253*cdf0e10cSrcweir         {
254*cdf0e10cSrcweir             if (IsFldEdit() && nTypeId == TYP_JUMPEDITFLD)
255*cdf0e10cSrcweir                 aFormatLB.SelectEntry(SW_RESSTR(FMT_MARK_BEGIN + (sal_uInt16)GetCurField()->GetFormat()));
256*cdf0e10cSrcweir 
257*cdf0e10cSrcweir             if (!aFormatLB.GetSelectEntryCount())
258*cdf0e10cSrcweir                 aFormatLB.SelectEntryPos(0);
259*cdf0e10cSrcweir         }
260*cdf0e10cSrcweir 
261*cdf0e10cSrcweir         sal_Bool bValue = sal_False, bName = sal_False, bMacro = sal_False, bInsert = sal_True;
262*cdf0e10cSrcweir         sal_Bool bShowSelection = sal_False;
263*cdf0e10cSrcweir         sal_Bool bFormat = nSize != 0;
264*cdf0e10cSrcweir 
265*cdf0e10cSrcweir         // fuer Conditional Text zwei Controls
266*cdf0e10cSrcweir         sal_Bool bDropDown = TYP_DROPDOWN == nTypeId;
267*cdf0e10cSrcweir         sal_Bool bCondTxtFld = TYP_CONDTXTFLD == nTypeId;
268*cdf0e10cSrcweir 
269*cdf0e10cSrcweir         aCond1FT.Show(!bDropDown && bCondTxtFld);
270*cdf0e10cSrcweir         aCond1ED.Show(!bDropDown && bCondTxtFld);
271*cdf0e10cSrcweir         aCond2FT.Show(!bDropDown && bCondTxtFld);
272*cdf0e10cSrcweir         aCond2ED.Show(!bDropDown && bCondTxtFld);
273*cdf0e10cSrcweir         aValueFT.Show(!bDropDown && !bCondTxtFld);
274*cdf0e10cSrcweir         aValueED.Show(!bDropDown && !bCondTxtFld);
275*cdf0e10cSrcweir         aMacroBT.Show(!bDropDown);
276*cdf0e10cSrcweir         aNameED.Show(!bDropDown);
277*cdf0e10cSrcweir         aNameFT.Show(!bDropDown);
278*cdf0e10cSrcweir 
279*cdf0e10cSrcweir         aListItemFT.Show(bDropDown);
280*cdf0e10cSrcweir         aListItemED.Show(bDropDown);
281*cdf0e10cSrcweir         aListAddPB.Show(bDropDown);
282*cdf0e10cSrcweir         aListItemsFT.Show(bDropDown);
283*cdf0e10cSrcweir         aListItemsLB.Show(bDropDown);
284*cdf0e10cSrcweir         aListRemovePB.Show(bDropDown);
285*cdf0e10cSrcweir         aListUpPB.Show(bDropDown);
286*cdf0e10cSrcweir         aListDownPB.Show(bDropDown);
287*cdf0e10cSrcweir         aListNameFT.Show(bDropDown);
288*cdf0e10cSrcweir         aListNameED.Show(bDropDown);
289*cdf0e10cSrcweir 
290*cdf0e10cSrcweir         aNameED.SetDropEnable(sal_False);
291*cdf0e10cSrcweir 
292*cdf0e10cSrcweir         if (IsFldEdit())
293*cdf0e10cSrcweir         {
294*cdf0e10cSrcweir             if(bDropDown)
295*cdf0e10cSrcweir             {
296*cdf0e10cSrcweir                 const SwDropDownField* pDrop = (const SwDropDownField*)GetCurField();
297*cdf0e10cSrcweir                 uno::Sequence<OUString> aItems = pDrop->GetItemSequence();
298*cdf0e10cSrcweir                 const OUString* pArray = aItems.getConstArray();
299*cdf0e10cSrcweir                 aListItemsLB.Clear();
300*cdf0e10cSrcweir                 for(sal_Int32 i = 0; i < aItems.getLength(); i++)
301*cdf0e10cSrcweir                     aListItemsLB.InsertEntry(pArray[i]);
302*cdf0e10cSrcweir                 aListItemsLB.SelectEntry(pDrop->GetSelectedItem());
303*cdf0e10cSrcweir                 aListNameED.SetText(pDrop->GetPar2());
304*cdf0e10cSrcweir                 aListNameED.SaveValue();
305*cdf0e10cSrcweir                 bDropDownLBChanged = false;
306*cdf0e10cSrcweir             }
307*cdf0e10cSrcweir             else
308*cdf0e10cSrcweir             {
309*cdf0e10cSrcweir                 aNameED.SetText(GetCurField()->GetPar1());
310*cdf0e10cSrcweir                 aValueED.SetText(GetCurField()->GetPar2());
311*cdf0e10cSrcweir             }
312*cdf0e10cSrcweir         }
313*cdf0e10cSrcweir         else
314*cdf0e10cSrcweir         {
315*cdf0e10cSrcweir             aNameED.SetText(aEmptyStr);
316*cdf0e10cSrcweir             aValueED.SetText(aEmptyStr);
317*cdf0e10cSrcweir         }
318*cdf0e10cSrcweir         if(bDropDown)
319*cdf0e10cSrcweir             ListEnableHdl(0);
320*cdf0e10cSrcweir 
321*cdf0e10cSrcweir         if( aNameFT.GetText() != sOldNameFT )
322*cdf0e10cSrcweir             aNameFT.SetText(sOldNameFT);
323*cdf0e10cSrcweir         if (aValueFT.GetText() != sOldValueFT)
324*cdf0e10cSrcweir             aValueFT.SetText(sOldValueFT);
325*cdf0e10cSrcweir 
326*cdf0e10cSrcweir         switch (nTypeId)
327*cdf0e10cSrcweir         {
328*cdf0e10cSrcweir             case TYP_MACROFLD:
329*cdf0e10cSrcweir                 bMacro = sal_True;
330*cdf0e10cSrcweir                 if (GetFldMgr().GetMacroPath().Len())
331*cdf0e10cSrcweir                     bValue = sal_True;
332*cdf0e10cSrcweir                 else
333*cdf0e10cSrcweir                     bInsert = sal_False;
334*cdf0e10cSrcweir 
335*cdf0e10cSrcweir                 aNameFT.SetText(SW_RESSTR(STR_MACNAME));
336*cdf0e10cSrcweir                 aValueFT.SetText(SW_RESSTR(STR_PROMPT));
337*cdf0e10cSrcweir                 aNameED.SetText(GetFldMgr().GetMacroName());
338*cdf0e10cSrcweir                 aNameED.SetAccessibleName(aNameFT.GetText());
339*cdf0e10cSrcweir                 aValueED.SetAccessibleName(aValueFT.GetText());
340*cdf0e10cSrcweir                 break;
341*cdf0e10cSrcweir 
342*cdf0e10cSrcweir             case TYP_HIDDENPARAFLD:
343*cdf0e10cSrcweir                 aNameFT.SetText(SW_RESSTR(STR_COND));
344*cdf0e10cSrcweir                 aNameED.SetDropEnable(sal_True);
345*cdf0e10cSrcweir                 bName = sal_True;
346*cdf0e10cSrcweir                 aNameED.SetAccessibleName(aNameFT.GetText());
347*cdf0e10cSrcweir                 aValueED.SetAccessibleName(aValueFT.GetText());
348*cdf0e10cSrcweir                 break;
349*cdf0e10cSrcweir 
350*cdf0e10cSrcweir             case TYP_HIDDENTXTFLD:
351*cdf0e10cSrcweir             {
352*cdf0e10cSrcweir                 aNameFT.SetText(SW_RESSTR(STR_COND));
353*cdf0e10cSrcweir                 aNameED.SetDropEnable(sal_True);
354*cdf0e10cSrcweir                 aValueFT.SetText(SW_RESSTR(STR_INSTEXT));
355*cdf0e10cSrcweir                 SwWrtShell* pSh = GetActiveWrtShell();
356*cdf0e10cSrcweir                 if (!IsFldEdit() && pSh )
357*cdf0e10cSrcweir                     aValueED.SetText(pSh->GetSelTxt());
358*cdf0e10cSrcweir                 bName = bValue = sal_True;
359*cdf0e10cSrcweir                 aNameED.SetAccessibleName(aNameFT.GetText());
360*cdf0e10cSrcweir                 aValueED.SetAccessibleName(aValueFT.GetText());
361*cdf0e10cSrcweir             }
362*cdf0e10cSrcweir             break;
363*cdf0e10cSrcweir 
364*cdf0e10cSrcweir             case TYP_CONDTXTFLD:
365*cdf0e10cSrcweir                 aNameFT.SetText(SW_RESSTR(STR_COND));
366*cdf0e10cSrcweir                 aNameED.SetDropEnable(sal_True);
367*cdf0e10cSrcweir                 if (IsFldEdit())
368*cdf0e10cSrcweir                 {
369*cdf0e10cSrcweir                     aCond1ED.SetText(GetCurField()->GetPar2().GetToken(0, '|'));
370*cdf0e10cSrcweir                     aCond2ED.SetText(GetCurField()->GetPar2().GetToken(1, '|'));
371*cdf0e10cSrcweir                 }
372*cdf0e10cSrcweir 
373*cdf0e10cSrcweir                 bName = bValue = sal_True;
374*cdf0e10cSrcweir                 aNameED.SetAccessibleName(aNameFT.GetText());
375*cdf0e10cSrcweir                 aValueED.SetAccessibleName(aValueFT.GetText());
376*cdf0e10cSrcweir                 break;
377*cdf0e10cSrcweir 
378*cdf0e10cSrcweir             case TYP_JUMPEDITFLD:
379*cdf0e10cSrcweir                 aNameFT.SetText(SW_RESSTR(STR_JUMPEDITFLD));
380*cdf0e10cSrcweir                 aValueFT.SetText(SW_RESSTR(STR_PROMPT));
381*cdf0e10cSrcweir                 bName = bValue = sal_True;
382*cdf0e10cSrcweir                 aNameED.SetAccessibleName(aNameFT.GetText());
383*cdf0e10cSrcweir                 aValueED.SetAccessibleName(aValueFT.GetText());
384*cdf0e10cSrcweir                 break;
385*cdf0e10cSrcweir 
386*cdf0e10cSrcweir             case TYP_INPUTFLD:
387*cdf0e10cSrcweir                 aValueFT.SetText(SW_RESSTR(STR_PROMPT));
388*cdf0e10cSrcweir                 bValue = sal_True;
389*cdf0e10cSrcweir                 // bShowSelection = TRUE;
390*cdf0e10cSrcweir                 aNameED.SetAccessibleName(aNameFT.GetText());
391*cdf0e10cSrcweir                 aValueED.SetAccessibleName(aValueFT.GetText());
392*cdf0e10cSrcweir                 break;
393*cdf0e10cSrcweir 
394*cdf0e10cSrcweir             case TYP_COMBINED_CHARS:
395*cdf0e10cSrcweir                 {
396*cdf0e10cSrcweir                     aNameFT.SetText(SW_RESSTR(STR_COMBCHRS_FT));
397*cdf0e10cSrcweir                     aNameED.SetDropEnable(sal_True);
398*cdf0e10cSrcweir                     bName = sal_True;
399*cdf0e10cSrcweir 
400*cdf0e10cSrcweir                     const sal_uInt16 nLen = aNameED.GetText().Len();
401*cdf0e10cSrcweir                     if( !nLen || nLen > MAX_COMBINED_CHARACTERS )
402*cdf0e10cSrcweir                         bInsert = sal_False;
403*cdf0e10cSrcweir                     aNameED.SetAccessibleName(aNameFT.GetText());
404*cdf0e10cSrcweir                     aValueED.SetAccessibleName(aValueFT.GetText());
405*cdf0e10cSrcweir                 }
406*cdf0e10cSrcweir                 break;
407*cdf0e10cSrcweir             case TYP_DROPDOWN :
408*cdf0e10cSrcweir             break;
409*cdf0e10cSrcweir             default:
410*cdf0e10cSrcweir                 break;
411*cdf0e10cSrcweir         }
412*cdf0e10cSrcweir 
413*cdf0e10cSrcweir         if (bShowSelection)
414*cdf0e10cSrcweir         {
415*cdf0e10cSrcweir             aSelectionLB.Show();
416*cdf0e10cSrcweir             aSelectionFT.Show();
417*cdf0e10cSrcweir             aFormatLB.Hide();
418*cdf0e10cSrcweir             aFormatFT.Hide();
419*cdf0e10cSrcweir         }
420*cdf0e10cSrcweir         else
421*cdf0e10cSrcweir         {
422*cdf0e10cSrcweir             aFormatLB.Show();
423*cdf0e10cSrcweir             aFormatFT.Show();
424*cdf0e10cSrcweir             aSelectionLB.Hide();
425*cdf0e10cSrcweir             aSelectionFT.Hide();
426*cdf0e10cSrcweir         }
427*cdf0e10cSrcweir 
428*cdf0e10cSrcweir         aFormatLB.Enable(bFormat);
429*cdf0e10cSrcweir         aFormatFT.Enable(bFormat);
430*cdf0e10cSrcweir         aNameFT.Enable(bName);
431*cdf0e10cSrcweir         aNameED.Enable(bName);
432*cdf0e10cSrcweir         aValueFT.Enable(bValue);
433*cdf0e10cSrcweir         aValueED.Enable(bValue);
434*cdf0e10cSrcweir         aMacroBT.Enable(bMacro);
435*cdf0e10cSrcweir 
436*cdf0e10cSrcweir         EnableInsert( bInsert );
437*cdf0e10cSrcweir     }
438*cdf0e10cSrcweir 
439*cdf0e10cSrcweir     return 0;
440*cdf0e10cSrcweir }
441*cdf0e10cSrcweir 
442*cdf0e10cSrcweir /*--------------------------------------------------------------------
443*cdf0e10cSrcweir     Beschreibung:
444*cdf0e10cSrcweir  --------------------------------------------------------------------*/
445*cdf0e10cSrcweir 
446*cdf0e10cSrcweir IMPL_LINK( SwFldFuncPage, SelectHdl, ListBox *, EMPTYARG )
447*cdf0e10cSrcweir {
448*cdf0e10cSrcweir     sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
449*cdf0e10cSrcweir 
450*cdf0e10cSrcweir     if( TYP_MACROFLD == nTypeId )
451*cdf0e10cSrcweir         aNameED.SetText( aSelectionLB.GetSelectEntry() );
452*cdf0e10cSrcweir 
453*cdf0e10cSrcweir     return 0;
454*cdf0e10cSrcweir }
455*cdf0e10cSrcweir 
456*cdf0e10cSrcweir /*--------------------------------------------------------------------
457*cdf0e10cSrcweir     Beschreibung:
458*cdf0e10cSrcweir  --------------------------------------------------------------------*/
459*cdf0e10cSrcweir 
460*cdf0e10cSrcweir IMPL_LINK( SwFldFuncPage, InsertMacroHdl, ListBox *, EMPTYARG )
461*cdf0e10cSrcweir {
462*cdf0e10cSrcweir     SelectHdl();
463*cdf0e10cSrcweir     InsertHdl();
464*cdf0e10cSrcweir 
465*cdf0e10cSrcweir     return 0;
466*cdf0e10cSrcweir }
467*cdf0e10cSrcweir /* -----------------16.06.2003 16:24-----------------
468*cdf0e10cSrcweir 
469*cdf0e10cSrcweir  --------------------------------------------------*/
470*cdf0e10cSrcweir IMPL_LINK( SwFldFuncPage, ListModifyHdl, Control*, pControl)
471*cdf0e10cSrcweir {
472*cdf0e10cSrcweir     aListItemsLB.SetUpdateMode(sal_False);
473*cdf0e10cSrcweir     if(pControl == &aListAddPB ||
474*cdf0e10cSrcweir             (pControl == &aListItemED && aListAddPB.IsEnabled()))
475*cdf0e10cSrcweir     {
476*cdf0e10cSrcweir         String sEntry(aListItemED.GetText());
477*cdf0e10cSrcweir         aListItemsLB.InsertEntry(sEntry);
478*cdf0e10cSrcweir         aListItemsLB.SelectEntry(sEntry);
479*cdf0e10cSrcweir     }
480*cdf0e10cSrcweir     else if(aListItemsLB.GetSelectEntryCount())
481*cdf0e10cSrcweir     {
482*cdf0e10cSrcweir         sal_uInt16 nSelPos = aListItemsLB.GetSelectEntryPos();
483*cdf0e10cSrcweir         if(pControl == &aListRemovePB)
484*cdf0e10cSrcweir         {
485*cdf0e10cSrcweir             aListItemsLB.RemoveEntry(nSelPos);
486*cdf0e10cSrcweir             aListItemsLB.SelectEntryPos(nSelPos ? nSelPos - 1 : 0);
487*cdf0e10cSrcweir         }
488*cdf0e10cSrcweir         else if(pControl == &aListUpPB)
489*cdf0e10cSrcweir         {
490*cdf0e10cSrcweir             if(nSelPos)
491*cdf0e10cSrcweir             {
492*cdf0e10cSrcweir                 String sEntry = aListItemsLB.GetSelectEntry();
493*cdf0e10cSrcweir                 aListItemsLB.RemoveEntry(nSelPos);
494*cdf0e10cSrcweir                 nSelPos--;
495*cdf0e10cSrcweir                 aListItemsLB.InsertEntry(sEntry, nSelPos);
496*cdf0e10cSrcweir                 aListItemsLB.SelectEntryPos(nSelPos);
497*cdf0e10cSrcweir             }
498*cdf0e10cSrcweir         }
499*cdf0e10cSrcweir         else if(pControl == &aListDownPB)
500*cdf0e10cSrcweir         {
501*cdf0e10cSrcweir             if(nSelPos < aListItemsLB.GetEntryCount() - 1)
502*cdf0e10cSrcweir             {
503*cdf0e10cSrcweir                 String sEntry = aListItemsLB.GetSelectEntry();
504*cdf0e10cSrcweir                 aListItemsLB.RemoveEntry(nSelPos);
505*cdf0e10cSrcweir                 nSelPos++;
506*cdf0e10cSrcweir                 aListItemsLB.InsertEntry(sEntry, nSelPos);
507*cdf0e10cSrcweir                 aListItemsLB.SelectEntryPos(nSelPos);
508*cdf0e10cSrcweir             }
509*cdf0e10cSrcweir         }
510*cdf0e10cSrcweir     }
511*cdf0e10cSrcweir     bDropDownLBChanged = true;
512*cdf0e10cSrcweir     aListItemsLB.SetUpdateMode(sal_True);
513*cdf0e10cSrcweir     ListEnableHdl(0);
514*cdf0e10cSrcweir     return 0;
515*cdf0e10cSrcweir }
516*cdf0e10cSrcweir /* -----------------17.06.2003 08:36-----------------
517*cdf0e10cSrcweir 
518*cdf0e10cSrcweir  --------------------------------------------------*/
519*cdf0e10cSrcweir IMPL_LINK( SwFldFuncPage, ListEnableHdl, void*, EMPTYARG)
520*cdf0e10cSrcweir {
521*cdf0e10cSrcweir     //enable "Add" button when text is in the Edit that's not already member of the box
522*cdf0e10cSrcweir     aListAddPB.Enable(aListItemED.GetText().Len() &&
523*cdf0e10cSrcweir                 LISTBOX_ENTRY_NOTFOUND == aListItemsLB.GetEntryPos(aListItemED.GetText()));
524*cdf0e10cSrcweir     sal_Bool bEnableButtons = aListItemsLB.GetSelectEntryCount() > 0;
525*cdf0e10cSrcweir     aListRemovePB.Enable(bEnableButtons);
526*cdf0e10cSrcweir     aListUpPB.Enable(bEnableButtons && (aListItemsLB.GetSelectEntryPos() > 0));
527*cdf0e10cSrcweir     aListDownPB.Enable(bEnableButtons &&
528*cdf0e10cSrcweir                 (aListItemsLB.GetSelectEntryPos() < (aListItemsLB.GetEntryCount() - 1)));
529*cdf0e10cSrcweir 
530*cdf0e10cSrcweir     return 0;
531*cdf0e10cSrcweir }
532*cdf0e10cSrcweir 
533*cdf0e10cSrcweir /*--------------------------------------------------------------------
534*cdf0e10cSrcweir      Beschreibung: Typen in der SelectionBox erneuern
535*cdf0e10cSrcweir  --------------------------------------------------------------------*/
536*cdf0e10cSrcweir 
537*cdf0e10cSrcweir 
538*cdf0e10cSrcweir void SwFldFuncPage::UpdateSubType()
539*cdf0e10cSrcweir {
540*cdf0e10cSrcweir     sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
541*cdf0e10cSrcweir 
542*cdf0e10cSrcweir     // Auswahl-Listbox fuellen
543*cdf0e10cSrcweir     aSelectionLB.SetUpdateMode(sal_False);
544*cdf0e10cSrcweir     aSelectionLB.Clear();
545*cdf0e10cSrcweir 
546*cdf0e10cSrcweir     SvStringsDtor aLst;
547*cdf0e10cSrcweir     GetFldMgr().GetSubTypes(nTypeId, aLst);
548*cdf0e10cSrcweir     sal_uInt16 nCount = aLst.Count();
549*cdf0e10cSrcweir 
550*cdf0e10cSrcweir     for (sal_uInt16 i = 0; i < nCount; ++i)
551*cdf0e10cSrcweir     {
552*cdf0e10cSrcweir         sal_uInt16 nPos = aSelectionLB.InsertEntry(*aLst[i]);
553*cdf0e10cSrcweir         aSelectionLB.SetEntryData(nPos, reinterpret_cast<void*>(i));
554*cdf0e10cSrcweir     }
555*cdf0e10cSrcweir 
556*cdf0e10cSrcweir     sal_Bool bEnable = nCount != 0;
557*cdf0e10cSrcweir 
558*cdf0e10cSrcweir     aSelectionLB.Enable( bEnable );
559*cdf0e10cSrcweir     aSelectionFT.Enable( bEnable );
560*cdf0e10cSrcweir 
561*cdf0e10cSrcweir     if (bEnable)
562*cdf0e10cSrcweir     {
563*cdf0e10cSrcweir             aSelectionLB.SelectEntryPos(0);
564*cdf0e10cSrcweir     }
565*cdf0e10cSrcweir 
566*cdf0e10cSrcweir     if (nTypeId == TYP_MACROFLD)
567*cdf0e10cSrcweir     {
568*cdf0e10cSrcweir         sal_Bool bHasMacro = GetFldMgr().GetMacroPath().Len() != 0;
569*cdf0e10cSrcweir 
570*cdf0e10cSrcweir         if (bHasMacro)
571*cdf0e10cSrcweir         {
572*cdf0e10cSrcweir             aNameED.SetText(GetFldMgr().GetMacroName());
573*cdf0e10cSrcweir             aValueFT.Enable();
574*cdf0e10cSrcweir             aValueED.Enable();
575*cdf0e10cSrcweir         }
576*cdf0e10cSrcweir         EnableInsert(bHasMacro);
577*cdf0e10cSrcweir     }
578*cdf0e10cSrcweir 
579*cdf0e10cSrcweir     aSelectionLB.SetUpdateMode(sal_True);
580*cdf0e10cSrcweir }
581*cdf0e10cSrcweir 
582*cdf0e10cSrcweir /*--------------------------------------------------------------------
583*cdf0e10cSrcweir     Beschreibung: MacroBrowser aufrufen, Listbox mit Macros fuellen
584*cdf0e10cSrcweir  --------------------------------------------------------------------*/
585*cdf0e10cSrcweir 
586*cdf0e10cSrcweir IMPL_LINK( SwFldFuncPage, MacroHdl, Button *, pBtn )
587*cdf0e10cSrcweir {
588*cdf0e10cSrcweir     Window* pDefModalDlgParent = Application::GetDefDialogParent();
589*cdf0e10cSrcweir     Application::SetDefDialogParent( pBtn );
590*cdf0e10cSrcweir 
591*cdf0e10cSrcweir     String sMacro(TurnMacroString(aNameED.GetText()));
592*cdf0e10cSrcweir     while (sMacro.SearchAndReplace('.', ';') != STRING_NOTFOUND) ;
593*cdf0e10cSrcweir 
594*cdf0e10cSrcweir     if (GetFldMgr().ChooseMacro(sMacro))
595*cdf0e10cSrcweir         UpdateSubType();
596*cdf0e10cSrcweir 
597*cdf0e10cSrcweir     Application::SetDefDialogParent( pDefModalDlgParent );
598*cdf0e10cSrcweir 
599*cdf0e10cSrcweir     return 0;
600*cdf0e10cSrcweir }
601*cdf0e10cSrcweir 
602*cdf0e10cSrcweir /*--------------------------------------------------------------------
603*cdf0e10cSrcweir     Beschreibung:
604*cdf0e10cSrcweir  --------------------------------------------------------------------*/
605*cdf0e10cSrcweir 
606*cdf0e10cSrcweir sal_Bool SwFldFuncPage::FillItemSet(SfxItemSet& )
607*cdf0e10cSrcweir {
608*cdf0e10cSrcweir     sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
609*cdf0e10cSrcweir 
610*cdf0e10cSrcweir     sal_uInt16 nSubType = 0;
611*cdf0e10cSrcweir 
612*cdf0e10cSrcweir     sal_uLong nFormat = aFormatLB.GetSelectEntryPos();
613*cdf0e10cSrcweir 
614*cdf0e10cSrcweir     if(nFormat == LISTBOX_ENTRY_NOTFOUND)
615*cdf0e10cSrcweir         nFormat = 0;
616*cdf0e10cSrcweir     else
617*cdf0e10cSrcweir         nFormat = (sal_uLong)aFormatLB.GetEntryData((sal_uInt16)nFormat);
618*cdf0e10cSrcweir 
619*cdf0e10cSrcweir     String aVal(aValueED.GetText());
620*cdf0e10cSrcweir     String aName(aNameED.GetText());
621*cdf0e10cSrcweir 
622*cdf0e10cSrcweir     switch(nTypeId)
623*cdf0e10cSrcweir     {
624*cdf0e10cSrcweir         case TYP_INPUTFLD:
625*cdf0e10cSrcweir             nSubType = INP_TXT;
626*cdf0e10cSrcweir             // to prevent removal of CR/LF restore old content
627*cdf0e10cSrcweir             if(!aNameED.IsModified() && IsFldEdit())
628*cdf0e10cSrcweir                 aName = GetCurField()->GetPar1();
629*cdf0e10cSrcweir 
630*cdf0e10cSrcweir             break;
631*cdf0e10cSrcweir 
632*cdf0e10cSrcweir         case TYP_MACROFLD:
633*cdf0e10cSrcweir             // use the full script URL, not the name in the Edit control
634*cdf0e10cSrcweir             aName = GetFldMgr().GetMacroPath();
635*cdf0e10cSrcweir             break;
636*cdf0e10cSrcweir 
637*cdf0e10cSrcweir         case TYP_CONDTXTFLD:
638*cdf0e10cSrcweir             aVal = aCond1ED.GetText();
639*cdf0e10cSrcweir             aVal += '|';
640*cdf0e10cSrcweir             aVal += aCond2ED.GetText();
641*cdf0e10cSrcweir             break;
642*cdf0e10cSrcweir         case TYP_DROPDOWN :
643*cdf0e10cSrcweir         {
644*cdf0e10cSrcweir             aName = aListNameED.GetText();
645*cdf0e10cSrcweir             for(sal_uInt16 i = 0; i < aListItemsLB.GetEntryCount(); i++)
646*cdf0e10cSrcweir             {
647*cdf0e10cSrcweir                 if(i)
648*cdf0e10cSrcweir                     aVal += DB_DELIM;
649*cdf0e10cSrcweir                 aVal += aListItemsLB.GetEntry(i);
650*cdf0e10cSrcweir             }
651*cdf0e10cSrcweir         }
652*cdf0e10cSrcweir         break;
653*cdf0e10cSrcweir         default:
654*cdf0e10cSrcweir             break;
655*cdf0e10cSrcweir     }
656*cdf0e10cSrcweir 
657*cdf0e10cSrcweir     if (!IsFldEdit() ||
658*cdf0e10cSrcweir         aNameED.GetSavedValue() != aNameED.GetText() ||
659*cdf0e10cSrcweir         aValueED.GetSavedValue() != aValueED.GetText() ||
660*cdf0e10cSrcweir         aCond1ED.GetSavedValue() != aCond1ED.GetText() ||
661*cdf0e10cSrcweir         aCond2ED.GetSavedValue() != aCond2ED.GetText() ||
662*cdf0e10cSrcweir         aListNameED.GetSavedValue() != aListNameED.GetText() ||
663*cdf0e10cSrcweir         bDropDownLBChanged ||
664*cdf0e10cSrcweir         nOldFormat != nFormat)
665*cdf0e10cSrcweir     {
666*cdf0e10cSrcweir         InsertFld( nTypeId, nSubType, aName, aVal, nFormat );
667*cdf0e10cSrcweir     }
668*cdf0e10cSrcweir 
669*cdf0e10cSrcweir     ModifyHdl();    // Insert ggf enablen/disablen
670*cdf0e10cSrcweir 
671*cdf0e10cSrcweir     return sal_False;
672*cdf0e10cSrcweir }
673*cdf0e10cSrcweir 
674*cdf0e10cSrcweir /*--------------------------------------------------------------------
675*cdf0e10cSrcweir     Beschreibung:
676*cdf0e10cSrcweir  --------------------------------------------------------------------*/
677*cdf0e10cSrcweir 
678*cdf0e10cSrcweir String SwFldFuncPage::TurnMacroString(const String &rMacro)
679*cdf0e10cSrcweir {
680*cdf0e10cSrcweir     if (rMacro.Len())
681*cdf0e10cSrcweir     {
682*cdf0e10cSrcweir         // Inhalt von aName umdrehen
683*cdf0e10cSrcweir         String sTmp, sBuf;
684*cdf0e10cSrcweir         sal_uInt16 nPos = 0;
685*cdf0e10cSrcweir 
686*cdf0e10cSrcweir         for (sal_uInt16 i = 0; i < 4 && nPos != STRING_NOTFOUND; i++)
687*cdf0e10cSrcweir         {
688*cdf0e10cSrcweir             if (i == 3)
689*cdf0e10cSrcweir                 sTmp = rMacro.Copy(nPos);
690*cdf0e10cSrcweir             else
691*cdf0e10cSrcweir                 sTmp = rMacro.GetToken(0, '.', nPos);
692*cdf0e10cSrcweir 
693*cdf0e10cSrcweir             if( sBuf.Len() )
694*cdf0e10cSrcweir                 sTmp += '.';
695*cdf0e10cSrcweir             sBuf.Insert( sTmp, 0 );
696*cdf0e10cSrcweir         }
697*cdf0e10cSrcweir         return sBuf;
698*cdf0e10cSrcweir     }
699*cdf0e10cSrcweir 
700*cdf0e10cSrcweir     return rMacro;
701*cdf0e10cSrcweir }
702*cdf0e10cSrcweir 
703*cdf0e10cSrcweir /*--------------------------------------------------------------------
704*cdf0e10cSrcweir     Beschreibung:
705*cdf0e10cSrcweir  --------------------------------------------------------------------*/
706*cdf0e10cSrcweir 
707*cdf0e10cSrcweir SfxTabPage* SwFldFuncPage::Create(  Window* pParent,
708*cdf0e10cSrcweir                         const SfxItemSet& rAttrSet )
709*cdf0e10cSrcweir {
710*cdf0e10cSrcweir     return ( new SwFldFuncPage( pParent, rAttrSet ) );
711*cdf0e10cSrcweir }
712*cdf0e10cSrcweir 
713*cdf0e10cSrcweir /*--------------------------------------------------------------------
714*cdf0e10cSrcweir     Beschreibung:
715*cdf0e10cSrcweir  --------------------------------------------------------------------*/
716*cdf0e10cSrcweir 
717*cdf0e10cSrcweir sal_uInt16 SwFldFuncPage::GetGroup()
718*cdf0e10cSrcweir {
719*cdf0e10cSrcweir     return GRP_FKT;
720*cdf0e10cSrcweir }
721*cdf0e10cSrcweir 
722*cdf0e10cSrcweir /* -----------------12.01.99 10:09-------------------
723*cdf0e10cSrcweir  *
724*cdf0e10cSrcweir  * --------------------------------------------------*/
725*cdf0e10cSrcweir void    SwFldFuncPage::FillUserData()
726*cdf0e10cSrcweir {
727*cdf0e10cSrcweir     String sData( String::CreateFromAscii(
728*cdf0e10cSrcweir                         RTL_CONSTASCII_STRINGPARAM( USER_DATA_VERSION )));
729*cdf0e10cSrcweir     sData += ';';
730*cdf0e10cSrcweir     sal_uInt16 nTypeSel = aTypeLB.GetSelectEntryPos();
731*cdf0e10cSrcweir     if( LISTBOX_ENTRY_NOTFOUND == nTypeSel )
732*cdf0e10cSrcweir         nTypeSel = USHRT_MAX;
733*cdf0e10cSrcweir     else
734*cdf0e10cSrcweir         nTypeSel = sal::static_int_cast< sal_uInt16 >(reinterpret_cast< sal_uIntPtr >(aTypeLB.GetEntryData( nTypeSel )));
735*cdf0e10cSrcweir     sData += String::CreateFromInt32( nTypeSel );
736*cdf0e10cSrcweir     SetUserData(sData);
737*cdf0e10cSrcweir }
738*cdf0e10cSrcweir 
739*cdf0e10cSrcweir IMPL_LINK( SwFldFuncPage, ModifyHdl, Edit *, EMPTYARG )
740*cdf0e10cSrcweir {
741*cdf0e10cSrcweir     String aName(aNameED.GetText());
742*cdf0e10cSrcweir     const sal_uInt16 nLen = aName.Len();
743*cdf0e10cSrcweir 
744*cdf0e10cSrcweir     sal_Bool bEnable = sal_True;
745*cdf0e10cSrcweir     sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel());
746*cdf0e10cSrcweir 
747*cdf0e10cSrcweir     if( TYP_COMBINED_CHARS == nTypeId &&
748*cdf0e10cSrcweir         (!nLen || nLen > MAX_COMBINED_CHARACTERS ))
749*cdf0e10cSrcweir         bEnable = sal_False;
750*cdf0e10cSrcweir 
751*cdf0e10cSrcweir     EnableInsert( bEnable );
752*cdf0e10cSrcweir 
753*cdf0e10cSrcweir     return 0;
754*cdf0e10cSrcweir }
755*cdf0e10cSrcweir 
756*cdf0e10cSrcweir 
757*cdf0e10cSrcweir 
758*cdf0e10cSrcweir 
759