1*efeef26fSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file 5*efeef26fSAndrew Rist * distributed with this work for additional information 6*efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the 8*efeef26fSAndrew Rist * "License"); you may not use this file except in compliance 9*efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing, 14*efeef26fSAndrew Rist * software distributed under the License is distributed on an 15*efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*efeef26fSAndrew Rist * KIND, either express or implied. See the License for the 17*efeef26fSAndrew Rist * specific language governing permissions and limitations 18*efeef26fSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*efeef26fSAndrew Rist *************************************************************/ 21*efeef26fSAndrew Rist 22*efeef26fSAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_sw.hxx" 26cdf0e10cSrcweir #ifdef SW_DLLIMPLEMENTATION 27cdf0e10cSrcweir #undef SW_DLLIMPLEMENTATION 28cdf0e10cSrcweir #endif 29cdf0e10cSrcweir 30cdf0e10cSrcweir 31cdf0e10cSrcweir #include <swtypes.hxx> 32cdf0e10cSrcweir #include <sfx2/linkmgr.hxx> 33cdf0e10cSrcweir #include <usrfld.hxx> 34cdf0e10cSrcweir #include <docufld.hxx> 35cdf0e10cSrcweir #include <expfld.hxx> 36cdf0e10cSrcweir #include <ddefld.hxx> 37cdf0e10cSrcweir #ifndef _VIEW_HXX 38cdf0e10cSrcweir #include <view.hxx> 39cdf0e10cSrcweir #endif 40cdf0e10cSrcweir #include <wrtsh.hxx> 41cdf0e10cSrcweir #include <doc.hxx> 42cdf0e10cSrcweir #include <docary.hxx> 43cdf0e10cSrcweir #include <swmodule.hxx> 44cdf0e10cSrcweir #ifndef _FLDVAR_HXX 45cdf0e10cSrcweir #include <fldvar.hxx> 46cdf0e10cSrcweir #endif 47cdf0e10cSrcweir #include <calc.hxx> 48cdf0e10cSrcweir #include <svl/zformat.hxx> 49cdf0e10cSrcweir #ifndef _GLOBALS_HRC 50cdf0e10cSrcweir #include <globals.hrc> 51cdf0e10cSrcweir #endif 52cdf0e10cSrcweir #ifndef _FLDUI_HRC 53cdf0e10cSrcweir #include <fldui.hrc> 54cdf0e10cSrcweir #endif 55cdf0e10cSrcweir #ifndef _FLDTDLG_HRC 56cdf0e10cSrcweir #include <fldtdlg.hrc> 57cdf0e10cSrcweir #endif 58cdf0e10cSrcweir 59cdf0e10cSrcweir #define USER_DATA_VERSION_1 "1" 60cdf0e10cSrcweir #define USER_DATA_VERSION USER_DATA_VERSION_1 61cdf0e10cSrcweir /*-------------------------------------------------------------------- 62cdf0e10cSrcweir Beschreibung: 63cdf0e10cSrcweir --------------------------------------------------------------------*/ 64cdf0e10cSrcweir 65cdf0e10cSrcweir SwFldVarPage::SwFldVarPage(Window* pParent, const SfxItemSet& rCoreSet ) : 66cdf0e10cSrcweir SwFldPage ( pParent, SW_RES( TP_FLD_VAR ), rCoreSet ), 67cdf0e10cSrcweir aTypeFT (this, SW_RES(FT_VARTYPE)), 68cdf0e10cSrcweir aTypeLB (this, SW_RES(LB_VARTYPE)), 69cdf0e10cSrcweir aSelectionFT (this, SW_RES(FT_VARSELECTION)), 70cdf0e10cSrcweir aSelectionLB (this, SW_RES(LB_VARSELECTION)), 71cdf0e10cSrcweir aNameFT (this, SW_RES(FT_VARNAME)), 72cdf0e10cSrcweir aNameED (this, SW_RES(ED_VARNAME)), 73cdf0e10cSrcweir aValueFT (this, SW_RES(FT_VARVALUE)), 74cdf0e10cSrcweir aValueED (this, SW_RES(ED_VARVALUE)), 75cdf0e10cSrcweir aFormatFT (this, SW_RES(FT_VARFORMAT)), 76cdf0e10cSrcweir aNumFormatLB (this, SW_RES(LB_VARNUMFORMAT)), 77cdf0e10cSrcweir aFormatLB (this, SW_RES(LB_VARFORMAT)), 78cdf0e10cSrcweir aChapterHeaderFT(this, SW_RES(FT_VARCHAPTERHEADER)), 79cdf0e10cSrcweir aChapterLevelFT (this, SW_RES(FT_VARCHAPTERLEVEL)), 80cdf0e10cSrcweir aChapterLevelLB (this, SW_RES(LB_VARCHAPTERLEVEL)), 81cdf0e10cSrcweir aInvisibleCB (this, SW_RES(CB_VARINVISIBLE)), 82cdf0e10cSrcweir aSeparatorFT (this, SW_RES(FT_VARSEPARATOR)), 83cdf0e10cSrcweir aSeparatorED (this, SW_RES(ED_VARSEPARATOR)), 84cdf0e10cSrcweir aNewDelTBX (this, SW_RES(TBX_VARNEWDEL)), 85cdf0e10cSrcweir bInit (sal_True) 86cdf0e10cSrcweir { 87cdf0e10cSrcweir FreeResource(); 88cdf0e10cSrcweir 89cdf0e10cSrcweir aNewDelTBX.SetSizePixel( aNewDelTBX.CalcWindowSizePixel() ); 90cdf0e10cSrcweir 91cdf0e10cSrcweir long nDelta = ( aValueED.GetSizePixel().Height() - 92cdf0e10cSrcweir aNewDelTBX.GetSizePixel().Height() ) / 2; 93cdf0e10cSrcweir Point aNewPnt = aNewDelTBX.GetPosPixel(); 94cdf0e10cSrcweir aNewPnt.Y() += nDelta; 95cdf0e10cSrcweir aNewDelTBX.SetPosPixel( aNewPnt ); 96cdf0e10cSrcweir 97cdf0e10cSrcweir sOldValueFT = aValueFT.GetText(); 98cdf0e10cSrcweir sOldNameFT = aNameFT.GetText(); 99cdf0e10cSrcweir 100cdf0e10cSrcweir for (sal_uInt16 i = 1; i <= MAXLEVEL; i++) 101cdf0e10cSrcweir aChapterLevelLB.InsertEntry(String::CreateFromInt32(i)); 102cdf0e10cSrcweir 103cdf0e10cSrcweir aChapterLevelLB.SelectEntryPos(0); 104cdf0e10cSrcweir //enable 'active' language selection 105cdf0e10cSrcweir aNumFormatLB.SetShowLanguageControl(sal_True); 106cdf0e10cSrcweir } 107cdf0e10cSrcweir 108cdf0e10cSrcweir /*-------------------------------------------------------------------- 109cdf0e10cSrcweir Beschreibung: 110cdf0e10cSrcweir --------------------------------------------------------------------*/ 111cdf0e10cSrcweir 112cdf0e10cSrcweir SwFldVarPage::~SwFldVarPage() 113cdf0e10cSrcweir { 114cdf0e10cSrcweir } 115cdf0e10cSrcweir 116cdf0e10cSrcweir /*-------------------------------------------------------------------- 117cdf0e10cSrcweir Beschreibung: 118cdf0e10cSrcweir --------------------------------------------------------------------*/ 119cdf0e10cSrcweir 120cdf0e10cSrcweir void SwFldVarPage::Reset(const SfxItemSet& ) 121cdf0e10cSrcweir { 122cdf0e10cSrcweir SavePos(&aTypeLB); 123cdf0e10cSrcweir 124cdf0e10cSrcweir Init(); // Allgemeine initialisierung 125cdf0e10cSrcweir 126cdf0e10cSrcweir aTypeLB.SetUpdateMode(sal_False); 127cdf0e10cSrcweir aTypeLB.Clear(); 128cdf0e10cSrcweir 129cdf0e10cSrcweir sal_uInt16 nPos, nTypeId; 130cdf0e10cSrcweir 131cdf0e10cSrcweir if (!IsFldEdit()) 132cdf0e10cSrcweir { 133cdf0e10cSrcweir // TypeListBox initialisieren 134cdf0e10cSrcweir const SwFldGroupRgn& rRg = GetFldMgr().GetGroupRange(IsFldDlgHtmlMode(), GetGroup()); 135cdf0e10cSrcweir 136cdf0e10cSrcweir for (short i = rRg.nStart; i < rRg.nEnd; ++i) 137cdf0e10cSrcweir { 138cdf0e10cSrcweir nTypeId = GetFldMgr().GetTypeId(i); 139cdf0e10cSrcweir nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(i)); 140cdf0e10cSrcweir aTypeLB.SetEntryData(nPos, reinterpret_cast<void*>(nTypeId)); 141cdf0e10cSrcweir } 142cdf0e10cSrcweir } 143cdf0e10cSrcweir else 144cdf0e10cSrcweir { 145cdf0e10cSrcweir SwField* pCurField = GetCurField(); 146cdf0e10cSrcweir nTypeId = pCurField->GetTypeId(); 147cdf0e10cSrcweir if (nTypeId == TYP_SETINPFLD) 148cdf0e10cSrcweir nTypeId = TYP_INPUTFLD; 149cdf0e10cSrcweir nPos = aTypeLB.InsertEntry(GetFldMgr().GetTypeStr(GetFldMgr().GetPos(nTypeId))); 150cdf0e10cSrcweir aTypeLB.SetEntryData(nPos, reinterpret_cast<void*>(nTypeId)); 151cdf0e10cSrcweir aNumFormatLB.SetAutomaticLanguage(pCurField->IsAutomaticLanguage()); 152cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell(); 153cdf0e10cSrcweir if(!pSh) 154cdf0e10cSrcweir pSh = ::GetActiveWrtShell(); 155cdf0e10cSrcweir if(pSh) 156cdf0e10cSrcweir { 157cdf0e10cSrcweir const SvNumberformat* pFormat = pSh->GetNumberFormatter()->GetEntry(pCurField->GetFormat()); 158cdf0e10cSrcweir if(pFormat) 159cdf0e10cSrcweir aNumFormatLB.SetLanguage(pFormat->GetLanguage()); 160cdf0e10cSrcweir } 161cdf0e10cSrcweir } 162cdf0e10cSrcweir 163cdf0e10cSrcweir // alte Pos selektieren 164cdf0e10cSrcweir RestorePos(&aTypeLB); 165cdf0e10cSrcweir 166cdf0e10cSrcweir aTypeLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl)); 167cdf0e10cSrcweir aTypeLB.SetSelectHdl (LINK(this, SwFldVarPage, TypeHdl)); 168cdf0e10cSrcweir aSelectionLB.SetSelectHdl (LINK(this, SwFldVarPage, SubTypeHdl)); 169cdf0e10cSrcweir aSelectionLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl)); 170cdf0e10cSrcweir aFormatLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl)); 171cdf0e10cSrcweir aNumFormatLB.SetDoubleClickHdl (LINK(this, SwFldVarPage, InsertHdl)); 172cdf0e10cSrcweir aNameED.SetModifyHdl (LINK(this, SwFldVarPage, ModifyHdl)); 173cdf0e10cSrcweir aValueED.SetModifyHdl (LINK(this, SwFldVarPage, ModifyHdl)); 174cdf0e10cSrcweir aNewDelTBX.SetClickHdl (LINK(this, SwFldVarPage, TBClickHdl)); 175cdf0e10cSrcweir aChapterLevelLB.SetSelectHdl (LINK(this, SwFldVarPage, ChapterHdl)); 176cdf0e10cSrcweir aSeparatorED.SetModifyHdl (LINK(this, SwFldVarPage, SeparatorHdl)); 177cdf0e10cSrcweir 178cdf0e10cSrcweir if( !IsRefresh() ) 179cdf0e10cSrcweir { 180cdf0e10cSrcweir String sUserData = GetUserData(); 181cdf0e10cSrcweir if(!IsRefresh() && sUserData.GetToken(0, ';').EqualsIgnoreCaseAscii(USER_DATA_VERSION_1)) 182cdf0e10cSrcweir { 183cdf0e10cSrcweir String sVal = sUserData.GetToken(1, ';'); 184cdf0e10cSrcweir sal_uInt16 nVal = (sal_uInt16)sVal.ToInt32(); 185cdf0e10cSrcweir if( USHRT_MAX != nVal ) 186cdf0e10cSrcweir { 187cdf0e10cSrcweir for(sal_uInt16 i = 0; i < aTypeLB.GetEntryCount(); i++) 188cdf0e10cSrcweir if(nVal == (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(i)) 189cdf0e10cSrcweir { 190cdf0e10cSrcweir aTypeLB.SelectEntryPos(i); 191cdf0e10cSrcweir break; 192cdf0e10cSrcweir } 193cdf0e10cSrcweir } 194cdf0e10cSrcweir } 195cdf0e10cSrcweir } 196cdf0e10cSrcweir TypeHdl(0); 197cdf0e10cSrcweir 198cdf0e10cSrcweir aTypeLB.SetUpdateMode(sal_True); 199cdf0e10cSrcweir 200cdf0e10cSrcweir if (IsFldEdit()) 201cdf0e10cSrcweir { 202cdf0e10cSrcweir aSelectionLB.SaveValue(); 203cdf0e10cSrcweir aFormatLB.SaveValue(); 204cdf0e10cSrcweir nOldFormat = aNumFormatLB.GetFormat(); 205cdf0e10cSrcweir aNameED.SaveValue(); 206cdf0e10cSrcweir aValueED.SaveValue(); 207cdf0e10cSrcweir aInvisibleCB.SaveValue(); 208cdf0e10cSrcweir aChapterLevelLB.SaveValue(); 209cdf0e10cSrcweir aSeparatorED.SaveValue(); 210cdf0e10cSrcweir } 211cdf0e10cSrcweir } 212cdf0e10cSrcweir 213cdf0e10cSrcweir /*-------------------------------------------------------------------- 214cdf0e10cSrcweir Beschreibung: 215cdf0e10cSrcweir --------------------------------------------------------------------*/ 216cdf0e10cSrcweir 217cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, TypeHdl, ListBox *, EMPTYARG ) 218cdf0e10cSrcweir { 219cdf0e10cSrcweir // Alte ListBoxPos sichern 220cdf0e10cSrcweir const sal_uInt16 nOld = GetTypeSel(); 221cdf0e10cSrcweir 222cdf0e10cSrcweir // Aktuelle ListBoxPos 223cdf0e10cSrcweir SetTypeSel(aTypeLB.GetSelectEntryPos()); 224cdf0e10cSrcweir 225cdf0e10cSrcweir if(GetTypeSel() == LISTBOX_ENTRY_NOTFOUND) 226cdf0e10cSrcweir { 227cdf0e10cSrcweir SetTypeSel(0); 228cdf0e10cSrcweir aTypeLB.SelectEntryPos(0); 229cdf0e10cSrcweir } 230cdf0e10cSrcweir 231cdf0e10cSrcweir if (nOld != GetTypeSel() || nOld == LISTBOX_ENTRY_NOTFOUND) 232cdf0e10cSrcweir { 233cdf0e10cSrcweir bInit = sal_True; 234cdf0e10cSrcweir if (nOld != LISTBOX_ENTRY_NOTFOUND) 235cdf0e10cSrcweir { 236cdf0e10cSrcweir aNameED.SetText(aEmptyStr); 237cdf0e10cSrcweir aValueED.SetText(aEmptyStr); 238cdf0e10cSrcweir } 239cdf0e10cSrcweir 240cdf0e10cSrcweir aValueED.SetDropEnable(sal_False); 241cdf0e10cSrcweir UpdateSubType(); // Auswahl-Listboxen initialisieren 242cdf0e10cSrcweir } 243cdf0e10cSrcweir 244cdf0e10cSrcweir bInit = sal_False; 245cdf0e10cSrcweir 246cdf0e10cSrcweir return 0; 247cdf0e10cSrcweir } 248cdf0e10cSrcweir 249cdf0e10cSrcweir /*-------------------------------------------------------------------- 250cdf0e10cSrcweir Beschreibung: 251cdf0e10cSrcweir --------------------------------------------------------------------*/ 252cdf0e10cSrcweir 253cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, SubTypeHdl, ListBox *, pBox ) 254cdf0e10cSrcweir { 255cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel()); 256cdf0e10cSrcweir sal_uInt16 nSelPos = aSelectionLB.GetSelectEntryPos(); 257cdf0e10cSrcweir 258cdf0e10cSrcweir if (nSelPos != LISTBOX_ENTRY_NOTFOUND) 259cdf0e10cSrcweir nSelPos = (sal_uInt16)(sal_uLong)aSelectionLB.GetEntryData(nSelPos); 260cdf0e10cSrcweir 261cdf0e10cSrcweir if (IsFldEdit() && (!pBox || bInit)) 262cdf0e10cSrcweir { 263cdf0e10cSrcweir if (nTypeId != TYP_FORMELFLD) 264cdf0e10cSrcweir aNameED.SetText(GetFldMgr().GetCurFldPar1()); 265cdf0e10cSrcweir 266cdf0e10cSrcweir aValueED.SetText(GetFldMgr().GetCurFldPar2()); 267cdf0e10cSrcweir } 268cdf0e10cSrcweir 269cdf0e10cSrcweir if (aNameFT.GetText() != sOldNameFT) 270cdf0e10cSrcweir aNameFT.SetText(sOldNameFT); 271cdf0e10cSrcweir if (aValueFT.GetText() != sOldValueFT) 272cdf0e10cSrcweir aValueFT.SetText(sOldValueFT); 273cdf0e10cSrcweir 274cdf0e10cSrcweir aNumFormatLB.SetUpdateMode(sal_False); 275cdf0e10cSrcweir aFormatLB.SetUpdateMode(sal_False); 276cdf0e10cSrcweir FillFormatLB(nTypeId); 277cdf0e10cSrcweir 278cdf0e10cSrcweir sal_uInt16 nSize = aFormatLB.GetEntryCount(); 279cdf0e10cSrcweir 280cdf0e10cSrcweir sal_Bool bValue = sal_False, bName = sal_False, bNumFmt = sal_False, 281cdf0e10cSrcweir bInvisible = sal_False, bSeparator = sal_False, bChapterLevel = sal_False; 282cdf0e10cSrcweir sal_Bool bFormat = nSize != 0; 283cdf0e10cSrcweir 284cdf0e10cSrcweir switch (nTypeId) 285cdf0e10cSrcweir { 286cdf0e10cSrcweir case TYP_USERFLD: 287cdf0e10cSrcweir { 288cdf0e10cSrcweir // Benutzertyp aendern oder anlegen 289cdf0e10cSrcweir SwUserFieldType* pType = (SwUserFieldType*) 290cdf0e10cSrcweir GetFldMgr().GetFldType(RES_USERFLD, nSelPos); 291cdf0e10cSrcweir 292cdf0e10cSrcweir if (pType) 293cdf0e10cSrcweir { 294cdf0e10cSrcweir if (!IsFldEdit()) 295cdf0e10cSrcweir { 296cdf0e10cSrcweir if (pBox || (bInit && !IsRefresh())) // Nur bei Interaktion mit Maus 297cdf0e10cSrcweir { 298cdf0e10cSrcweir aNameED.SetText(pType->GetName()); 299cdf0e10cSrcweir 300cdf0e10cSrcweir if (pType->GetType() == UF_STRING) 301cdf0e10cSrcweir { 302cdf0e10cSrcweir aValueED.SetText(pType->GetContent()); 303cdf0e10cSrcweir aNumFormatLB.SelectEntryPos(0); 304cdf0e10cSrcweir } 305cdf0e10cSrcweir else 306cdf0e10cSrcweir aValueED.SetText(pType->GetContent()); 307cdf0e10cSrcweir // aValueED.SetText(pType->GetContent(aNumFormatLB.GetFormat())); 308cdf0e10cSrcweir } 309cdf0e10cSrcweir } 310cdf0e10cSrcweir else 311cdf0e10cSrcweir aValueED.SetText(pType->GetContent()); 312cdf0e10cSrcweir } 313cdf0e10cSrcweir else 314cdf0e10cSrcweir { 315cdf0e10cSrcweir if (pBox) // Nur bei Interaktion mit Maus 316cdf0e10cSrcweir { 317cdf0e10cSrcweir aNameED.SetText(aEmptyStr); 318cdf0e10cSrcweir aValueED.SetText(aEmptyStr); 319cdf0e10cSrcweir } 320cdf0e10cSrcweir } 321cdf0e10cSrcweir bValue = bName = bNumFmt = bInvisible = sal_True; 322cdf0e10cSrcweir 323cdf0e10cSrcweir aValueED.SetDropEnable(sal_True); 324cdf0e10cSrcweir break; 325cdf0e10cSrcweir } 326cdf0e10cSrcweir 327cdf0e10cSrcweir case TYP_SETFLD: 328cdf0e10cSrcweir bValue = sal_True; 329cdf0e10cSrcweir 330cdf0e10cSrcweir bNumFmt = bInvisible = sal_True; 331cdf0e10cSrcweir 332cdf0e10cSrcweir if (!IsFldDlgHtmlMode()) 333cdf0e10cSrcweir bName = sal_True; 334cdf0e10cSrcweir else 335cdf0e10cSrcweir { 336cdf0e10cSrcweir aNumFormatLB.Clear(); 337cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_SETVAR_TEXT), 0); 338cdf0e10cSrcweir aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); 339cdf0e10cSrcweir aNumFormatLB.SelectEntryPos(0); 340cdf0e10cSrcweir } 341cdf0e10cSrcweir // gibt es ein entprechendes SetField 342cdf0e10cSrcweir if (IsFldEdit() || pBox) // Nur bei Interaktion mit Maus 343cdf0e10cSrcweir { 344cdf0e10cSrcweir if (nSelPos != LISTBOX_ENTRY_NOTFOUND) 345cdf0e10cSrcweir { 346cdf0e10cSrcweir String sName(aSelectionLB.GetSelectEntry()); 347cdf0e10cSrcweir aNameED.SetText(sName); 348cdf0e10cSrcweir 349cdf0e10cSrcweir if (!IsFldDlgHtmlMode()) 350cdf0e10cSrcweir { 351cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell(); 352cdf0e10cSrcweir if(!pSh) 353cdf0e10cSrcweir pSh = ::GetActiveWrtShell(); 354cdf0e10cSrcweir if(pSh) 355cdf0e10cSrcweir { 356cdf0e10cSrcweir SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*) 357cdf0e10cSrcweir pSh->GetFldType(RES_SETEXPFLD, sName); 358cdf0e10cSrcweir 359cdf0e10cSrcweir if (pSetTyp && pSetTyp->GetType() == nsSwGetSetExpType::GSE_STRING) 360cdf0e10cSrcweir aNumFormatLB.SelectEntryPos(0); // Textuell 361cdf0e10cSrcweir } 362cdf0e10cSrcweir } 363cdf0e10cSrcweir } 364cdf0e10cSrcweir } 365cdf0e10cSrcweir if (IsFldEdit()) 366cdf0e10cSrcweir { 367cdf0e10cSrcweir // GetFormula fuehrt bei Datumsformaten zu Problemen, 368cdf0e10cSrcweir // da nur der numerische Wert ohne Formatierung returned wird. 369cdf0e10cSrcweir // Muss aber verwendet werden, da sonst bei GetPar2 nur der vom 370cdf0e10cSrcweir // Kalkulator errechnete Wert angezeigt werden wuerde 371cdf0e10cSrcweir // (statt test2 = test + 1) 372cdf0e10cSrcweir aValueED.SetText(((SwSetExpField*)GetCurField())->GetFormula()); 373cdf0e10cSrcweir } 374cdf0e10cSrcweir aValueED.SetDropEnable(sal_True); 375cdf0e10cSrcweir break; 376cdf0e10cSrcweir 377cdf0e10cSrcweir case TYP_FORMELFLD: 378cdf0e10cSrcweir { 379cdf0e10cSrcweir bValue = sal_True; 380cdf0e10cSrcweir bNumFmt = sal_True; 381cdf0e10cSrcweir aValueFT.SetText(SW_RESSTR(STR_FORMULA)); 382cdf0e10cSrcweir aValueED.SetDropEnable(sal_True); 383cdf0e10cSrcweir } 384cdf0e10cSrcweir break; 385cdf0e10cSrcweir 386cdf0e10cSrcweir case TYP_GETFLD: 387cdf0e10cSrcweir { 388cdf0e10cSrcweir if (!IsFldEdit()) 389cdf0e10cSrcweir { 390cdf0e10cSrcweir aNameED.SetText(aEmptyStr); 391cdf0e10cSrcweir aValueED.SetText(aEmptyStr); 392cdf0e10cSrcweir } 393cdf0e10cSrcweir 394cdf0e10cSrcweir if (nSelPos != LISTBOX_ENTRY_NOTFOUND) 395cdf0e10cSrcweir { 396cdf0e10cSrcweir String sName(aSelectionLB.GetSelectEntry()); 397cdf0e10cSrcweir if (!IsFldEdit()) 398cdf0e10cSrcweir aNameED.SetText(sName); 399cdf0e10cSrcweir 400cdf0e10cSrcweir // gibt es ein entprechendes SetField 401cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell(); 402cdf0e10cSrcweir if(!pSh) 403cdf0e10cSrcweir pSh = ::GetActiveWrtShell(); 404cdf0e10cSrcweir if(pSh) 405cdf0e10cSrcweir { 406cdf0e10cSrcweir SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*) 407cdf0e10cSrcweir pSh->GetFldType(RES_SETEXPFLD, sName); 408cdf0e10cSrcweir 409cdf0e10cSrcweir if(pSetTyp) 410cdf0e10cSrcweir { 411cdf0e10cSrcweir if (pSetTyp->GetType() & nsSwGetSetExpType::GSE_STRING) // Textuell? 412cdf0e10cSrcweir bFormat = sal_True; 413cdf0e10cSrcweir else // Numerisch 414cdf0e10cSrcweir bNumFmt = sal_True; 415cdf0e10cSrcweir } 416cdf0e10cSrcweir } 417cdf0e10cSrcweir } 418cdf0e10cSrcweir else 419cdf0e10cSrcweir bFormat = sal_False; 420cdf0e10cSrcweir 421cdf0e10cSrcweir EnableInsert(bFormat|bNumFmt); 422cdf0e10cSrcweir } 423cdf0e10cSrcweir break; 424cdf0e10cSrcweir 425cdf0e10cSrcweir case TYP_INPUTFLD: 426cdf0e10cSrcweir aValueFT.SetText(SW_RESSTR(STR_PROMPT)); 427cdf0e10cSrcweir 428cdf0e10cSrcweir if (nSelPos != LISTBOX_ENTRY_NOTFOUND) 429cdf0e10cSrcweir { 430cdf0e10cSrcweir bValue = bNumFmt = sal_True; 431cdf0e10cSrcweir 432cdf0e10cSrcweir String sName; 433cdf0e10cSrcweir 434cdf0e10cSrcweir sName = aSelectionLB.GetSelectEntry(); 435cdf0e10cSrcweir aNameED.SetText( sName ); 436cdf0e10cSrcweir 437cdf0e10cSrcweir // User- oder SetField ? 438cdf0e10cSrcweir sal_uInt16 nInpType = 0; 439cdf0e10cSrcweir nInpType = static_cast< sal_uInt16 >(GetFldMgr().GetFldType(RES_USERFLD, sName) ? 0 : TYP_SETINPFLD); 440cdf0e10cSrcweir 441cdf0e10cSrcweir if (nInpType) // SETEXPFLD 442cdf0e10cSrcweir { 443cdf0e10cSrcweir // gibt es ein entprechendes SetField 444cdf0e10cSrcweir SwSetExpFieldType* pSetTyp = (SwSetExpFieldType*) 445cdf0e10cSrcweir GetFldMgr().GetFldType(RES_SETEXPFLD, sName); 446cdf0e10cSrcweir 447cdf0e10cSrcweir if(pSetTyp) 448cdf0e10cSrcweir { 449cdf0e10cSrcweir if (pSetTyp->GetType() == nsSwGetSetExpType::GSE_STRING) // Textuell? 450cdf0e10cSrcweir { 451cdf0e10cSrcweir aNumFormatLB.Clear(); 452cdf0e10cSrcweir 453cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_USERVAR_TEXT), 0); 454cdf0e10cSrcweir aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); 455cdf0e10cSrcweir aNumFormatLB.SelectEntryPos(0); 456cdf0e10cSrcweir } 457cdf0e10cSrcweir } 458cdf0e10cSrcweir if (IsFldEdit() && (!pBox || bInit) ) 459cdf0e10cSrcweir aValueED.SetText(((SwSetExpField*)GetCurField())->GetPromptText()); 460cdf0e10cSrcweir } 461cdf0e10cSrcweir else // USERFLD 462cdf0e10cSrcweir bFormat = bNumFmt = sal_False; 463cdf0e10cSrcweir } 464cdf0e10cSrcweir break; 465cdf0e10cSrcweir 466cdf0e10cSrcweir case TYP_DDEFLD: 467cdf0e10cSrcweir aValueFT.SetText(SW_RESSTR(STR_DDE_CMD)); 468cdf0e10cSrcweir 469cdf0e10cSrcweir if (IsFldEdit() || pBox) // Nur bei Interaktion mit Maus 470cdf0e10cSrcweir { 471cdf0e10cSrcweir if (nSelPos != LISTBOX_ENTRY_NOTFOUND) 472cdf0e10cSrcweir { 473cdf0e10cSrcweir SwDDEFieldType* pType = 474cdf0e10cSrcweir (SwDDEFieldType*) GetFldMgr().GetFldType(RES_DDEFLD, nSelPos); 475cdf0e10cSrcweir 476cdf0e10cSrcweir if(pType) 477cdf0e10cSrcweir { 478cdf0e10cSrcweir aNameED.SetText(pType->GetName()); 479cdf0e10cSrcweir 480cdf0e10cSrcweir //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren 481cdf0e10cSrcweir // Namen haben! Wird hier noch nicht beachtet 482cdf0e10cSrcweir String sCmd( pType->GetCmd() ); 483cdf0e10cSrcweir sal_uInt16 nTmpPos = sCmd.SearchAndReplace( sfx2::cTokenSeperator, ' ' ); 484cdf0e10cSrcweir sCmd.SearchAndReplace( sfx2::cTokenSeperator, ' ', nTmpPos ); 485cdf0e10cSrcweir 486cdf0e10cSrcweir aValueED.SetText( sCmd ); 487cdf0e10cSrcweir aFormatLB.SelectEntryPos(pType->GetType()); 488cdf0e10cSrcweir } 489cdf0e10cSrcweir } 490cdf0e10cSrcweir } 491cdf0e10cSrcweir bName = bValue = sal_True; 492cdf0e10cSrcweir break; 493cdf0e10cSrcweir 494cdf0e10cSrcweir case TYP_SEQFLD: 495cdf0e10cSrcweir { 496cdf0e10cSrcweir // aNumRB.Check(sal_True); 497cdf0e10cSrcweir bName = bValue = bSeparator = bChapterLevel = sal_True; 498cdf0e10cSrcweir 499cdf0e10cSrcweir SwFieldType* pFldTyp; 500cdf0e10cSrcweir if( IsFldEdit() ) 501cdf0e10cSrcweir pFldTyp = GetCurField()->GetTyp(); 502cdf0e10cSrcweir else 503cdf0e10cSrcweir { 504cdf0e10cSrcweir String sFldTypeName( aSelectionLB.GetEntry( nSelPos )); 505cdf0e10cSrcweir if( sFldTypeName.Len() ) 506cdf0e10cSrcweir pFldTyp = GetFldMgr().GetFldType( RES_SETEXPFLD, 507cdf0e10cSrcweir sFldTypeName ); 508cdf0e10cSrcweir else 509cdf0e10cSrcweir pFldTyp = 0; 510cdf0e10cSrcweir } 511cdf0e10cSrcweir 512cdf0e10cSrcweir if( IsFldEdit() ) 513cdf0e10cSrcweir aValueED.SetText( ((SwSetExpField*)GetCurField())-> 514cdf0e10cSrcweir GetFormula() ); 515cdf0e10cSrcweir 516cdf0e10cSrcweir if( IsFldEdit() || pBox ) // Nur bei Interaktion mit Maus 517cdf0e10cSrcweir aNameED.SetText( aSelectionLB.GetSelectEntry() ); 518cdf0e10cSrcweir 519cdf0e10cSrcweir if( pFldTyp ) 520cdf0e10cSrcweir { 521cdf0e10cSrcweir sal_uInt8 nLevel = ((SwSetExpFieldType*)pFldTyp)->GetOutlineLvl(); 522cdf0e10cSrcweir if( 0x7f == nLevel ) 523cdf0e10cSrcweir aChapterLevelLB.SelectEntryPos( 0 ); 524cdf0e10cSrcweir else 525cdf0e10cSrcweir aChapterLevelLB.SelectEntryPos( nLevel + 1 ); 526cdf0e10cSrcweir String sDelim = ((SwSetExpFieldType*)pFldTyp)->GetDelimiter(); 527cdf0e10cSrcweir aSeparatorED.SetText( sDelim ); 528cdf0e10cSrcweir ChapterHdl(); 529cdf0e10cSrcweir } 530cdf0e10cSrcweir } 531cdf0e10cSrcweir break; 532cdf0e10cSrcweir 533cdf0e10cSrcweir case TYP_SETREFPAGEFLD: 534cdf0e10cSrcweir { 535cdf0e10cSrcweir bValue = sal_False; 536cdf0e10cSrcweir aValueFT.SetText( SW_RESSTR( STR_OFFSET )); 537cdf0e10cSrcweir 538cdf0e10cSrcweir if (IsFldEdit() || pBox) // Nur bei Interaktion mit Maus 539cdf0e10cSrcweir aNameED.SetText(aEmptyStr); 540cdf0e10cSrcweir 541cdf0e10cSrcweir if (nSelPos != 0 && nSelPos != LISTBOX_ENTRY_NOTFOUND) 542cdf0e10cSrcweir { 543cdf0e10cSrcweir bValue = sal_True; // SubType OFF - kennt keinen Offset 544cdf0e10cSrcweir if (IsFldEdit()) 545cdf0e10cSrcweir aValueED.SetText(String::CreateFromInt32(((SwRefPageSetField*)GetCurField())->GetOffset())); 546cdf0e10cSrcweir } 547cdf0e10cSrcweir } 548cdf0e10cSrcweir break; 549cdf0e10cSrcweir 550cdf0e10cSrcweir case TYP_GETREFPAGEFLD: 551cdf0e10cSrcweir aNameED.SetText(aEmptyStr); 552cdf0e10cSrcweir aValueED.SetText(aEmptyStr); 553cdf0e10cSrcweir break; 554cdf0e10cSrcweir } 555cdf0e10cSrcweir 556cdf0e10cSrcweir aNumFormatLB.Show(bNumFmt); 557cdf0e10cSrcweir aFormatLB.Show(!bNumFmt); 558cdf0e10cSrcweir 559cdf0e10cSrcweir if (IsFldEdit()) 560cdf0e10cSrcweir bName = sal_False; 561cdf0e10cSrcweir 562cdf0e10cSrcweir aFormatLB.Enable(bFormat); 563cdf0e10cSrcweir aFormatFT.Enable(bFormat|bNumFmt); 564cdf0e10cSrcweir aNameFT.Enable(bName); 565cdf0e10cSrcweir aNameED.Enable(bName); 566cdf0e10cSrcweir aValueFT.Enable(bValue); 567cdf0e10cSrcweir aValueED.Enable(bValue); 568cdf0e10cSrcweir 569cdf0e10cSrcweir Size aSz(aFormatLB.GetSizePixel()); 570cdf0e10cSrcweir 571cdf0e10cSrcweir if (bChapterLevel) 572cdf0e10cSrcweir aSz.Height() = aFormatLB.LogicToPixel(Size(1, 94), MAP_APPFONT).Height(); 573cdf0e10cSrcweir else 574cdf0e10cSrcweir aSz.Height() = aFormatLB.LogicToPixel(Size(1, 123), MAP_APPFONT).Height(); 575cdf0e10cSrcweir 576cdf0e10cSrcweir aFormatLB.SetSizePixel(aSz); 577cdf0e10cSrcweir 578cdf0e10cSrcweir aInvisibleCB.Show(!bSeparator); 579cdf0e10cSrcweir aSeparatorFT.Show(bSeparator); 580cdf0e10cSrcweir aSeparatorED.Show(bSeparator); 581cdf0e10cSrcweir aChapterHeaderFT.Show(bChapterLevel); 582cdf0e10cSrcweir aChapterLevelFT.Show(bChapterLevel); 583cdf0e10cSrcweir aChapterLevelLB.Show(bChapterLevel); 584cdf0e10cSrcweir aInvisibleCB.Enable(bInvisible); 585cdf0e10cSrcweir 586cdf0e10cSrcweir ModifyHdl(); // Anwenden/Einfuegen/Loeschen Status update 587cdf0e10cSrcweir 588cdf0e10cSrcweir aNumFormatLB.SetUpdateMode(sal_True); 589cdf0e10cSrcweir aFormatLB.SetUpdateMode(sal_True); 590cdf0e10cSrcweir 591cdf0e10cSrcweir if(aSelectionLB.IsCallAddSelection()) 592cdf0e10cSrcweir { 593cdf0e10cSrcweir nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel()); 594cdf0e10cSrcweir 595cdf0e10cSrcweir switch (nTypeId) 596cdf0e10cSrcweir { 597cdf0e10cSrcweir case TYP_FORMELFLD: 598cdf0e10cSrcweir { 599cdf0e10cSrcweir nSelPos = aSelectionLB.GetSelectEntryPos(); 600cdf0e10cSrcweir 601cdf0e10cSrcweir if (nSelPos != LISTBOX_ENTRY_NOTFOUND) 602cdf0e10cSrcweir nSelPos = (sal_uInt16)(sal_uLong)aSelectionLB.GetEntryData(nSelPos); 603cdf0e10cSrcweir 604cdf0e10cSrcweir if (nSelPos != LISTBOX_ENTRY_NOTFOUND && pBox && !bInit) 605cdf0e10cSrcweir { 606cdf0e10cSrcweir aValueED.ReplaceSelected(aSelectionLB.GetSelectEntry()); 607cdf0e10cSrcweir ModifyHdl(); 608cdf0e10cSrcweir } 609cdf0e10cSrcweir } 610cdf0e10cSrcweir break; 611cdf0e10cSrcweir } 612cdf0e10cSrcweir aSelectionLB.ResetCallAddSelection(); 613cdf0e10cSrcweir } 614cdf0e10cSrcweir return 0; 615cdf0e10cSrcweir } 616cdf0e10cSrcweir 617cdf0e10cSrcweir /*-------------------------------------------------------------------- 618cdf0e10cSrcweir Beschreibung: Typen in der SelectionBox erneuern 619cdf0e10cSrcweir --------------------------------------------------------------------*/ 620cdf0e10cSrcweir 621cdf0e10cSrcweir void SwFldVarPage::UpdateSubType() 622cdf0e10cSrcweir { 623cdf0e10cSrcweir String sOldSel; 624cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel()); 625cdf0e10cSrcweir 626cdf0e10cSrcweir SetSelectionSel(aSelectionLB.GetSelectEntryPos()); 627cdf0e10cSrcweir if(GetSelectionSel() != LISTBOX_ENTRY_NOTFOUND) 628cdf0e10cSrcweir sOldSel = aSelectionLB.GetEntry(GetSelectionSel()); 629cdf0e10cSrcweir 630cdf0e10cSrcweir // Auswahl-Listbox fuellen 631cdf0e10cSrcweir aSelectionLB.SetUpdateMode(sal_False); 632cdf0e10cSrcweir aSelectionLB.Clear(); 633cdf0e10cSrcweir 634cdf0e10cSrcweir SvStringsDtor aList; 635cdf0e10cSrcweir GetFldMgr().GetSubTypes(nTypeId, aList); 636cdf0e10cSrcweir sal_uInt16 nCount = aList.Count(); 637cdf0e10cSrcweir sal_uInt16 nPos; 638cdf0e10cSrcweir 639cdf0e10cSrcweir for (sal_uInt16 i = 0; i < nCount; ++i) 640cdf0e10cSrcweir { 641cdf0e10cSrcweir if (nTypeId != TYP_INPUTFLD || i) 642cdf0e10cSrcweir { 643cdf0e10cSrcweir if (!IsFldEdit()) 644cdf0e10cSrcweir { 645cdf0e10cSrcweir nPos = aSelectionLB.InsertEntry(*aList[i]); 646cdf0e10cSrcweir aSelectionLB.SetEntryData(nPos, reinterpret_cast<void*>(i)); 647cdf0e10cSrcweir } 648cdf0e10cSrcweir else 649cdf0e10cSrcweir { 650cdf0e10cSrcweir sal_Bool bInsert = sal_False; 651cdf0e10cSrcweir 652cdf0e10cSrcweir switch (nTypeId) 653cdf0e10cSrcweir { 654cdf0e10cSrcweir case TYP_INPUTFLD: 655cdf0e10cSrcweir if (*aList[i] == GetCurField()->GetPar1()) 656cdf0e10cSrcweir bInsert = sal_True; 657cdf0e10cSrcweir break; 658cdf0e10cSrcweir 659cdf0e10cSrcweir case TYP_FORMELFLD: 660cdf0e10cSrcweir bInsert = sal_True; 661cdf0e10cSrcweir break; 662cdf0e10cSrcweir 663cdf0e10cSrcweir case TYP_GETFLD: 664cdf0e10cSrcweir if (*aList[i] == ((SwFormulaField*)GetCurField())->GetFormula()) 665cdf0e10cSrcweir bInsert = sal_True; 666cdf0e10cSrcweir break; 667cdf0e10cSrcweir 668cdf0e10cSrcweir case TYP_SETFLD: 669cdf0e10cSrcweir case TYP_USERFLD: 670cdf0e10cSrcweir if (*aList[i] == GetCurField()->GetTyp()->GetName()) 671cdf0e10cSrcweir { 672cdf0e10cSrcweir bInsert = sal_True; 673cdf0e10cSrcweir if (GetCurField()->GetSubType() & nsSwExtendedSubType::SUB_INVISIBLE) 674cdf0e10cSrcweir aInvisibleCB.Check(); 675cdf0e10cSrcweir } 676cdf0e10cSrcweir break; 677cdf0e10cSrcweir 678cdf0e10cSrcweir case TYP_SETREFPAGEFLD: 679cdf0e10cSrcweir if ((((SwRefPageSetField*)GetCurField())->IsOn() && i) || 680cdf0e10cSrcweir (!((SwRefPageSetField*)GetCurField())->IsOn() && !i)) 681cdf0e10cSrcweir sOldSel = *aList[i]; 682cdf0e10cSrcweir 683cdf0e10cSrcweir // Alle Eintr?ge zur Auswahl zulassen: 684cdf0e10cSrcweir nPos = aSelectionLB.InsertEntry(*aList[i]); 685cdf0e10cSrcweir aSelectionLB.SetEntryData(nPos, reinterpret_cast<void*>(i)); 686cdf0e10cSrcweir break; 687cdf0e10cSrcweir 688cdf0e10cSrcweir default: 689cdf0e10cSrcweir if (*aList[i] == GetCurField()->GetPar1()) 690cdf0e10cSrcweir bInsert = sal_True; 691cdf0e10cSrcweir break; 692cdf0e10cSrcweir } 693cdf0e10cSrcweir if (bInsert) 694cdf0e10cSrcweir { 695cdf0e10cSrcweir nPos = aSelectionLB.InsertEntry(*aList[i]); 696cdf0e10cSrcweir aSelectionLB.SetEntryData(nPos, reinterpret_cast<void*>(i)); 697cdf0e10cSrcweir if (nTypeId != TYP_FORMELFLD) 698cdf0e10cSrcweir break; 699cdf0e10cSrcweir } 700cdf0e10cSrcweir } 701cdf0e10cSrcweir } 702cdf0e10cSrcweir } 703cdf0e10cSrcweir 704cdf0e10cSrcweir sal_Bool bEnable = aSelectionLB.GetEntryCount() != 0; 705cdf0e10cSrcweir ListBox *pLB = 0; 706cdf0e10cSrcweir 707cdf0e10cSrcweir if (bEnable) 708cdf0e10cSrcweir { 709cdf0e10cSrcweir aSelectionLB.SelectEntry(sOldSel); 710cdf0e10cSrcweir if (!aSelectionLB.GetSelectEntryCount()) 711cdf0e10cSrcweir { 712cdf0e10cSrcweir aSelectionLB.SelectEntryPos(0); 713cdf0e10cSrcweir pLB = &aSelectionLB; // Alle Controls neu initialisieren 714cdf0e10cSrcweir } 715cdf0e10cSrcweir } 716cdf0e10cSrcweir 717cdf0e10cSrcweir aSelectionLB.Enable( bEnable ); 718cdf0e10cSrcweir aSelectionFT.Enable( bEnable ); 719cdf0e10cSrcweir 720cdf0e10cSrcweir SubTypeHdl(pLB); 721cdf0e10cSrcweir aSelectionLB.SetUpdateMode(sal_True); 722cdf0e10cSrcweir } 723cdf0e10cSrcweir 724cdf0e10cSrcweir /*-------------------------------------------------------------------- 725cdf0e10cSrcweir Beschreibung: 726cdf0e10cSrcweir --------------------------------------------------------------------*/ 727cdf0e10cSrcweir 728cdf0e10cSrcweir sal_uInt16 SwFldVarPage::FillFormatLB(sal_uInt16 nTypeId) 729cdf0e10cSrcweir { 730cdf0e10cSrcweir String sOldSel, sOldNumSel; 731cdf0e10cSrcweir sal_uLong nOldNumFormat = 0; 732cdf0e10cSrcweir 733cdf0e10cSrcweir sal_uInt16 nFormatSel = aFormatLB.GetSelectEntryPos(); 734cdf0e10cSrcweir if (nFormatSel != LISTBOX_ENTRY_NOTFOUND) 735cdf0e10cSrcweir sOldSel = aFormatLB.GetEntry(nFormatSel); 736cdf0e10cSrcweir 737cdf0e10cSrcweir sal_uInt16 nNumFormatSel = aNumFormatLB.GetSelectEntryPos(); 738cdf0e10cSrcweir if (nNumFormatSel != LISTBOX_ENTRY_NOTFOUND) 739cdf0e10cSrcweir { 740cdf0e10cSrcweir sOldNumSel = aNumFormatLB.GetEntry(nNumFormatSel); 741cdf0e10cSrcweir nOldNumFormat = aNumFormatLB.GetFormat(); 742cdf0e10cSrcweir } 743cdf0e10cSrcweir 744cdf0e10cSrcweir // Format-Listbox fuellen 745cdf0e10cSrcweir aFormatLB.Clear(); 746cdf0e10cSrcweir aNumFormatLB.Clear(); 747cdf0e10cSrcweir sal_Bool bSpecialFmt = sal_False; 748cdf0e10cSrcweir 749cdf0e10cSrcweir if( TYP_GETREFPAGEFLD != nTypeId ) 750cdf0e10cSrcweir { 751cdf0e10cSrcweir if (IsFldEdit()) 752cdf0e10cSrcweir { 753cdf0e10cSrcweir bSpecialFmt = GetCurField()->GetFormat() == SAL_MAX_UINT32; 754cdf0e10cSrcweir 755cdf0e10cSrcweir if (!bSpecialFmt) 756cdf0e10cSrcweir { 757cdf0e10cSrcweir aNumFormatLB.SetDefFormat(GetCurField()->GetFormat()); 758cdf0e10cSrcweir sOldNumSel = aEmptyStr; 759cdf0e10cSrcweir } 760cdf0e10cSrcweir else 761cdf0e10cSrcweir if (nTypeId == TYP_GETFLD || nTypeId == TYP_FORMELFLD) 762cdf0e10cSrcweir aNumFormatLB.SetFormatType(NUMBERFORMAT_NUMBER); 763cdf0e10cSrcweir } 764cdf0e10cSrcweir else 765cdf0e10cSrcweir { 766cdf0e10cSrcweir if (nOldNumFormat && nOldNumFormat != ULONG_MAX) 767cdf0e10cSrcweir aNumFormatLB.SetDefFormat(nOldNumFormat); 768cdf0e10cSrcweir else 769cdf0e10cSrcweir aNumFormatLB.SetFormatType(NUMBERFORMAT_NUMBER); 770cdf0e10cSrcweir } 771cdf0e10cSrcweir } 772cdf0e10cSrcweir 773cdf0e10cSrcweir switch (nTypeId) 774cdf0e10cSrcweir { 775cdf0e10cSrcweir case TYP_USERFLD: 776cdf0e10cSrcweir { 777cdf0e10cSrcweir if (!IsFldEdit() || bSpecialFmt) 778cdf0e10cSrcweir { 779cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_MARK_TEXT), 0); 780cdf0e10cSrcweir aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); 781cdf0e10cSrcweir nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_USERVAR_CMD), 1); 782cdf0e10cSrcweir aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); 783cdf0e10cSrcweir } 784cdf0e10cSrcweir } 785cdf0e10cSrcweir break; 786cdf0e10cSrcweir 787cdf0e10cSrcweir case TYP_SETFLD: 788cdf0e10cSrcweir { 789cdf0e10cSrcweir if (!IsFldEdit() || bSpecialFmt) 790cdf0e10cSrcweir { 791cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_SETVAR_TEXT), 0); 792cdf0e10cSrcweir aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); 793cdf0e10cSrcweir } 794cdf0e10cSrcweir } 795cdf0e10cSrcweir break; 796cdf0e10cSrcweir 797cdf0e10cSrcweir case TYP_FORMELFLD: 798cdf0e10cSrcweir { 799cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_GETVAR_NAME), 0); 800cdf0e10cSrcweir aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); 801cdf0e10cSrcweir } 802cdf0e10cSrcweir break; 803cdf0e10cSrcweir 804cdf0e10cSrcweir case TYP_GETFLD: 805cdf0e10cSrcweir { 806cdf0e10cSrcweir sal_uInt16 nPos = aNumFormatLB.InsertEntry(SW_RESSTR(FMT_GETVAR_NAME), 0); 807cdf0e10cSrcweir aNumFormatLB.SetEntryData(nPos, (void *)ULONG_MAX); 808cdf0e10cSrcweir } 809cdf0e10cSrcweir break; 810cdf0e10cSrcweir } 811cdf0e10cSrcweir 812cdf0e10cSrcweir if (IsFldEdit() && bSpecialFmt) 813cdf0e10cSrcweir { 814cdf0e10cSrcweir if (nTypeId == TYP_USERFLD && (GetCurField()->GetSubType() & nsSwExtendedSubType::SUB_CMD)) 815cdf0e10cSrcweir aNumFormatLB.SelectEntryPos(1); 816cdf0e10cSrcweir else 817cdf0e10cSrcweir aNumFormatLB.SelectEntryPos(0); 818cdf0e10cSrcweir } 819cdf0e10cSrcweir else 820cdf0e10cSrcweir { 821cdf0e10cSrcweir if (!nOldNumFormat && (nNumFormatSel = aNumFormatLB.GetEntryPos(sOldNumSel)) != LISTBOX_ENTRY_NOTFOUND) 822cdf0e10cSrcweir aNumFormatLB.SelectEntryPos(nNumFormatSel); 823cdf0e10cSrcweir else if (nOldNumFormat && nOldNumFormat == ULONG_MAX) 824cdf0e10cSrcweir aNumFormatLB.SelectEntry(sOldSel); 825cdf0e10cSrcweir } 826cdf0e10cSrcweir 827cdf0e10cSrcweir sal_uInt16 nSize = GetFldMgr().GetFormatCount(nTypeId, sal_False, IsFldDlgHtmlMode()); 828cdf0e10cSrcweir 829cdf0e10cSrcweir for (sal_uInt16 i = 0; i < nSize; i++) 830cdf0e10cSrcweir { 831cdf0e10cSrcweir sal_uInt16 nPos = aFormatLB.InsertEntry(GetFldMgr().GetFormatStr(nTypeId, i)); 832cdf0e10cSrcweir sal_uInt16 nFldId = GetFldMgr().GetFormatId( nTypeId, i ); 833cdf0e10cSrcweir aFormatLB.SetEntryData( nPos, reinterpret_cast<void*>(nFldId) ); 834cdf0e10cSrcweir if (IsFldEdit() && nFldId == GetCurField()->GetFormat()) 835cdf0e10cSrcweir aFormatLB.SelectEntryPos( nPos ); 836cdf0e10cSrcweir } 837cdf0e10cSrcweir 838cdf0e10cSrcweir if (nSize && (!IsFldEdit() || !aFormatLB.GetSelectEntryCount())) 839cdf0e10cSrcweir { 840cdf0e10cSrcweir aFormatLB.SelectEntry(sOldSel); 841cdf0e10cSrcweir 842cdf0e10cSrcweir if (!aFormatLB.GetSelectEntryCount()) 843cdf0e10cSrcweir { 844cdf0e10cSrcweir aFormatLB.SelectEntry(SW_RESSTR(FMT_NUM_PAGEDESC)); 845cdf0e10cSrcweir if (!aFormatLB.GetSelectEntryCount()) 846cdf0e10cSrcweir { 847cdf0e10cSrcweir aFormatLB.SelectEntry(SW_RESSTR(FMT_NUM_ARABIC)); 848cdf0e10cSrcweir if (!aFormatLB.GetSelectEntryCount()) 849cdf0e10cSrcweir aFormatLB.SelectEntryPos(0); 850cdf0e10cSrcweir } 851cdf0e10cSrcweir } 852cdf0e10cSrcweir } 853cdf0e10cSrcweir 854cdf0e10cSrcweir return nSize; 855cdf0e10cSrcweir } 856cdf0e10cSrcweir 857cdf0e10cSrcweir /*-------------------------------------------------------------------- 858cdf0e10cSrcweir Beschreibung: Modify 859cdf0e10cSrcweir --------------------------------------------------------------------*/ 860cdf0e10cSrcweir 861cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, ModifyHdl, Edit *, EMPTYARG ) 862cdf0e10cSrcweir { 863cdf0e10cSrcweir String sValue(aValueED.GetText()); 864cdf0e10cSrcweir sal_Bool bHasValue = sValue.Len() != 0; 865cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel()); 866cdf0e10cSrcweir sal_Bool bInsert = sal_False, bApply = sal_False, bDelete = sal_False; 867cdf0e10cSrcweir 868cdf0e10cSrcweir String sName( aNameED.GetText() ); 869cdf0e10cSrcweir xub_StrLen nLen = sName.Len(); 870cdf0e10cSrcweir 871cdf0e10cSrcweir switch( nTypeId ) 872cdf0e10cSrcweir { 873cdf0e10cSrcweir case TYP_DDEFLD: 874cdf0e10cSrcweir case TYP_USERFLD: 875cdf0e10cSrcweir case TYP_SETFLD: 876cdf0e10cSrcweir case TYP_SEQFLD: 877cdf0e10cSrcweir SwCalc::IsValidVarName( sName, &sName ); 878cdf0e10cSrcweir if( sName.Len() != nLen ) 879cdf0e10cSrcweir { 880cdf0e10cSrcweir nLen = sName.Len(); 881cdf0e10cSrcweir Selection aSel(aNameED.GetSelection()); 882cdf0e10cSrcweir aNameED.SetText( sName ); 883cdf0e10cSrcweir aNameED.SetSelection( aSel ); // Cursorpos restaurieren 884cdf0e10cSrcweir } 885cdf0e10cSrcweir break; 886cdf0e10cSrcweir } 887cdf0e10cSrcweir 888cdf0e10cSrcweir 889cdf0e10cSrcweir // Buttons ueberpruefen 890cdf0e10cSrcweir switch (nTypeId) 891cdf0e10cSrcweir { 892cdf0e10cSrcweir case TYP_DDEFLD: 893cdf0e10cSrcweir if( nLen ) 894cdf0e10cSrcweir { 895cdf0e10cSrcweir // Gibts schon einen entsprechenden Type 896cdf0e10cSrcweir bInsert = bApply = sal_True; 897cdf0e10cSrcweir 898cdf0e10cSrcweir SwFieldType* pType = GetFldMgr().GetFldType(RES_DDEFLD, sName); 899cdf0e10cSrcweir 900cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell(); 901cdf0e10cSrcweir if(!pSh) 902cdf0e10cSrcweir pSh = ::GetActiveWrtShell(); 903cdf0e10cSrcweir if(pSh && pType) 904cdf0e10cSrcweir bDelete = !pSh->IsUsed( *pType ); 905cdf0e10cSrcweir } 906cdf0e10cSrcweir break; 907cdf0e10cSrcweir 908cdf0e10cSrcweir case TYP_USERFLD: 909cdf0e10cSrcweir if( nLen ) 910cdf0e10cSrcweir { 911cdf0e10cSrcweir // Gibts schon einen entsprechenden Type 912cdf0e10cSrcweir SwFieldType* pType = GetFldMgr().GetFldType(RES_USERFLD, sName); 913cdf0e10cSrcweir 914cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell(); 915cdf0e10cSrcweir if(!pSh) 916cdf0e10cSrcweir pSh = ::GetActiveWrtShell(); 917cdf0e10cSrcweir if(pSh && pType) 918cdf0e10cSrcweir bDelete = !pSh->IsUsed( *pType ); 919cdf0e10cSrcweir 920cdf0e10cSrcweir pType = GetFldMgr().GetFldType(RES_SETEXPFLD, sName); 921cdf0e10cSrcweir if (!pType) // Kein Namenskonflikt mit Variablen 922cdf0e10cSrcweir { 923cdf0e10cSrcweir // Benutzerfelder duerfen auch ohne Inhalt eingefuegt werden! 924cdf0e10cSrcweir // Bug #56845 925cdf0e10cSrcweir bInsert = bApply = sal_True; 926cdf0e10cSrcweir } 927cdf0e10cSrcweir } 928cdf0e10cSrcweir break; 929cdf0e10cSrcweir 930cdf0e10cSrcweir default: 931cdf0e10cSrcweir bInsert = sal_True; 932cdf0e10cSrcweir 933cdf0e10cSrcweir if (nTypeId == TYP_SETFLD || nTypeId == TYP_SEQFLD) 934cdf0e10cSrcweir { 935cdf0e10cSrcweir SwSetExpFieldType* pFldType = (SwSetExpFieldType*) 936cdf0e10cSrcweir GetFldMgr().GetFldType(RES_SETEXPFLD, sName); 937cdf0e10cSrcweir 938cdf0e10cSrcweir if (pFldType) 939cdf0e10cSrcweir { 940cdf0e10cSrcweir 941cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell(); 942cdf0e10cSrcweir if(!pSh) 943cdf0e10cSrcweir pSh = ::GetActiveWrtShell(); 944cdf0e10cSrcweir if(pSh) 945cdf0e10cSrcweir { 946cdf0e10cSrcweir const SwFldTypes* p = pSh->GetDoc()->GetFldTypes(); 947cdf0e10cSrcweir sal_uInt16 i; 948cdf0e10cSrcweir 949cdf0e10cSrcweir for (i = 0; i < INIT_FLDTYPES; i++) 950cdf0e10cSrcweir { 951cdf0e10cSrcweir SwFieldType* pType = (*p)[ i ]; 952cdf0e10cSrcweir if (pType == pFldType) 953cdf0e10cSrcweir break; 954cdf0e10cSrcweir } 955cdf0e10cSrcweir 956cdf0e10cSrcweir if (i >= INIT_FLDTYPES && !pSh->IsUsed(*pFldType)) 957cdf0e10cSrcweir bDelete = sal_True; 958cdf0e10cSrcweir 959cdf0e10cSrcweir if (nTypeId == TYP_SEQFLD && !(pFldType->GetType() & nsSwGetSetExpType::GSE_SEQ)) 960cdf0e10cSrcweir bInsert = sal_False; 961cdf0e10cSrcweir 962cdf0e10cSrcweir if (nTypeId == TYP_SETFLD && (pFldType->GetType() & nsSwGetSetExpType::GSE_SEQ)) 963cdf0e10cSrcweir bInsert = sal_False; 964cdf0e10cSrcweir } 965cdf0e10cSrcweir } 966cdf0e10cSrcweir if (GetFldMgr().GetFldType(RES_USERFLD, sName)) 967cdf0e10cSrcweir bInsert = sal_False; 968cdf0e10cSrcweir } 969cdf0e10cSrcweir 970cdf0e10cSrcweir if( !nLen && ( nTypeId == TYP_SETFLD || 971cdf0e10cSrcweir (!IsFldEdit() && nTypeId == TYP_GETFLD ) ) ) 972cdf0e10cSrcweir bInsert = sal_False; 973cdf0e10cSrcweir 974cdf0e10cSrcweir if( (nTypeId == TYP_SETFLD || nTypeId == TYP_FORMELFLD) && 975cdf0e10cSrcweir !bHasValue ) 976cdf0e10cSrcweir bInsert = sal_False; 977cdf0e10cSrcweir break; 978cdf0e10cSrcweir } 979cdf0e10cSrcweir 980cdf0e10cSrcweir aNewDelTBX.EnableItem(BT_VARAPPLY, bApply); 981cdf0e10cSrcweir aNewDelTBX.EnableItem(BT_VARDELETE, bDelete); 982cdf0e10cSrcweir EnableInsert(bInsert); 983cdf0e10cSrcweir 984cdf0e10cSrcweir return 0; 985cdf0e10cSrcweir } 986cdf0e10cSrcweir 987cdf0e10cSrcweir /*-------------------------------------------------------------------- 988cdf0e10cSrcweir Beschreibung: 989cdf0e10cSrcweir --------------------------------------------------------------------*/ 990cdf0e10cSrcweir 991cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, TBClickHdl, ToolBox *, pBox ) 992cdf0e10cSrcweir { 993cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel()); 994cdf0e10cSrcweir 995cdf0e10cSrcweir switch (pBox->GetCurItemId()) 996cdf0e10cSrcweir { 997cdf0e10cSrcweir case BT_VARDELETE: 998cdf0e10cSrcweir { 999cdf0e10cSrcweir if( nTypeId == TYP_USERFLD ) 1000cdf0e10cSrcweir GetFldMgr().RemoveFldType(RES_USERFLD, aSelectionLB.GetSelectEntry()); 1001cdf0e10cSrcweir else 1002cdf0e10cSrcweir { 1003cdf0e10cSrcweir sal_uInt16 nWhich; 1004cdf0e10cSrcweir 1005cdf0e10cSrcweir switch(nTypeId) 1006cdf0e10cSrcweir { 1007cdf0e10cSrcweir case TYP_SETFLD: 1008cdf0e10cSrcweir case TYP_SEQFLD: 1009cdf0e10cSrcweir nWhich = RES_SETEXPFLD; 1010cdf0e10cSrcweir break; 1011cdf0e10cSrcweir default: 1012cdf0e10cSrcweir nWhich = RES_DDEFLD; 1013cdf0e10cSrcweir break; 1014cdf0e10cSrcweir } 1015cdf0e10cSrcweir 1016cdf0e10cSrcweir GetFldMgr().RemoveFldType(nWhich, aSelectionLB.GetSelectEntry()); 1017cdf0e10cSrcweir } 1018cdf0e10cSrcweir 1019cdf0e10cSrcweir UpdateSubType(); 1020cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell(); 1021cdf0e10cSrcweir if(!pSh) 1022cdf0e10cSrcweir pSh = ::GetActiveWrtShell(); 1023cdf0e10cSrcweir if(pSh) 1024cdf0e10cSrcweir { 1025cdf0e10cSrcweir pSh->SetModified(); 1026cdf0e10cSrcweir } 1027cdf0e10cSrcweir } 1028cdf0e10cSrcweir break; 1029cdf0e10cSrcweir 1030cdf0e10cSrcweir case BT_VARAPPLY: 1031cdf0e10cSrcweir { 1032cdf0e10cSrcweir String sName(aNameED.GetText()), sValue(aValueED.GetText()); 1033cdf0e10cSrcweir SwFieldType* pType = 0; 1034cdf0e10cSrcweir sal_uInt16 nId = 0; 1035cdf0e10cSrcweir sal_uInt16 nNumFormatPos = aNumFormatLB.GetSelectEntryPos(); 1036cdf0e10cSrcweir 1037cdf0e10cSrcweir switch (nTypeId) 1038cdf0e10cSrcweir { 1039cdf0e10cSrcweir case TYP_USERFLD: nId = RES_USERFLD; break; 1040cdf0e10cSrcweir case TYP_DDEFLD: nId = RES_DDEFLD; break; 1041cdf0e10cSrcweir case TYP_SETFLD: nId = RES_SETEXPFLD;break; 1042cdf0e10cSrcweir } 1043cdf0e10cSrcweir pType = GetFldMgr().GetFldType(nId, sName); 1044cdf0e10cSrcweir 1045cdf0e10cSrcweir sal_uLong nFormat = aFormatLB.GetSelectEntryPos(); 1046cdf0e10cSrcweir if (nFormat != LISTBOX_ENTRY_NOTFOUND) 1047cdf0e10cSrcweir nFormat = (sal_uLong)aFormatLB.GetEntryData((sal_uInt16)nFormat); 1048cdf0e10cSrcweir 1049cdf0e10cSrcweir if (pType) // Aendern 1050cdf0e10cSrcweir { 1051cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell(); 1052cdf0e10cSrcweir if(!pSh) 1053cdf0e10cSrcweir pSh = ::GetActiveWrtShell(); 1054cdf0e10cSrcweir if(pSh) 1055cdf0e10cSrcweir { 1056cdf0e10cSrcweir pSh->StartAllAction(); 1057cdf0e10cSrcweir 1058cdf0e10cSrcweir if (nTypeId == TYP_USERFLD) 1059cdf0e10cSrcweir { 1060cdf0e10cSrcweir if (nNumFormatPos != LISTBOX_ENTRY_NOTFOUND) 1061cdf0e10cSrcweir { 1062cdf0e10cSrcweir sal_uLong nFmt = nNumFormatPos == 0 ? 0 : aNumFormatLB.GetFormat(); 1063cdf0e10cSrcweir if (nFmt) 1064cdf0e10cSrcweir { // Sprache auf Office-Sprache umstellen, da String im Office 1065cdf0e10cSrcweir // Format vom Kalkulator erwartet wird und so in den Dlg 1066cdf0e10cSrcweir // eingegeben werden sollte 1067cdf0e10cSrcweir nFmt = SwValueField::GetSystemFormat(pSh->GetNumberFormatter(), nFmt); 1068cdf0e10cSrcweir } 1069cdf0e10cSrcweir ((SwUserFieldType*)pType)->SetContent(aValueED.GetText(), nFmt); 1070cdf0e10cSrcweir ((SwUserFieldType*)pType)->SetType( 1071cdf0e10cSrcweir nNumFormatPos == 0 ? nsSwGetSetExpType::GSE_STRING : nsSwGetSetExpType::GSE_EXPR ); 1072cdf0e10cSrcweir } 1073cdf0e10cSrcweir } 1074cdf0e10cSrcweir else 1075cdf0e10cSrcweir { 1076cdf0e10cSrcweir if (nFormat != LISTBOX_ENTRY_NOTFOUND) 1077cdf0e10cSrcweir { 1078cdf0e10cSrcweir //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren 1079cdf0e10cSrcweir // Namen haben! Wird hier noch nicht beachtet. 1080cdf0e10cSrcweir sal_uInt16 nTmpPos = sValue.SearchAndReplace( ' ', sfx2::cTokenSeperator ); 1081cdf0e10cSrcweir sValue.SearchAndReplace( ' ', sfx2::cTokenSeperator, nTmpPos ); 1082cdf0e10cSrcweir ((SwDDEFieldType*)pType)->SetCmd(sValue); 1083cdf0e10cSrcweir ((SwDDEFieldType*)pType)->SetType((sal_uInt16)nFormat); 1084cdf0e10cSrcweir } 1085cdf0e10cSrcweir } 1086cdf0e10cSrcweir pType->UpdateFlds(); 1087cdf0e10cSrcweir 1088cdf0e10cSrcweir pSh->EndAllAction(); 1089cdf0e10cSrcweir } 1090cdf0e10cSrcweir } 1091cdf0e10cSrcweir else // Neu 1092cdf0e10cSrcweir { 1093cdf0e10cSrcweir if(nTypeId == TYP_USERFLD) 1094cdf0e10cSrcweir { 1095cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell(); 1096cdf0e10cSrcweir if(!pSh) 1097cdf0e10cSrcweir pSh = ::GetActiveWrtShell(); 1098cdf0e10cSrcweir if(pSh) 1099cdf0e10cSrcweir { 1100cdf0e10cSrcweir SwUserFieldType aType( pSh->GetDoc(), sName ); 1101cdf0e10cSrcweir 1102cdf0e10cSrcweir if (nNumFormatPos != LISTBOX_ENTRY_NOTFOUND) 1103cdf0e10cSrcweir { 1104cdf0e10cSrcweir aType.SetType(nNumFormatPos == 0 ? nsSwGetSetExpType::GSE_STRING : nsSwGetSetExpType::GSE_EXPR); 1105cdf0e10cSrcweir aType.SetContent( sValue, nNumFormatPos == 0 ? 0 : aNumFormatLB.GetFormat() ); 1106cdf0e10cSrcweir aSelectionLB.InsertEntry(sName); 1107cdf0e10cSrcweir aSelectionLB.SelectEntry(sName); 1108cdf0e10cSrcweir GetFldMgr().InsertFldType( aType ); // Userfld Neu 1109cdf0e10cSrcweir } 1110cdf0e10cSrcweir } 1111cdf0e10cSrcweir } 1112cdf0e10cSrcweir else 1113cdf0e10cSrcweir { 1114cdf0e10cSrcweir if (nFormat != LISTBOX_ENTRY_NOTFOUND) 1115cdf0e10cSrcweir { 1116cdf0e10cSrcweir //JP 28.08.95: DDE-Topics/-Items koennen Blanks in ihren 1117cdf0e10cSrcweir // Namen haben! Wird hier noch nicht beachtet. 1118cdf0e10cSrcweir sal_uInt16 nTmpPos = sValue.SearchAndReplace( ' ', sfx2::cTokenSeperator ); 1119cdf0e10cSrcweir sValue.SearchAndReplace( ' ', sfx2::cTokenSeperator, nTmpPos ); 1120cdf0e10cSrcweir 1121cdf0e10cSrcweir SwDDEFieldType aType(sName, sValue, (sal_uInt16)nFormat); 1122cdf0e10cSrcweir aSelectionLB.InsertEntry(sName); 1123cdf0e10cSrcweir aSelectionLB.SelectEntry(sName); 1124cdf0e10cSrcweir GetFldMgr().InsertFldType(aType); // DDE-Feld Neu 1125cdf0e10cSrcweir } 1126cdf0e10cSrcweir } 1127cdf0e10cSrcweir } 1128cdf0e10cSrcweir if (IsFldEdit()) 1129cdf0e10cSrcweir GetFldMgr().GetCurFld(); // FieldManager Updaten 1130cdf0e10cSrcweir 1131cdf0e10cSrcweir UpdateSubType(); 1132cdf0e10cSrcweir } 1133cdf0e10cSrcweir break; 1134cdf0e10cSrcweir } 1135cdf0e10cSrcweir 1136cdf0e10cSrcweir return sal_True; 1137cdf0e10cSrcweir } 1138cdf0e10cSrcweir 1139cdf0e10cSrcweir /*-------------------------------------------------------------------- 1140cdf0e10cSrcweir Beschreibung: 1141cdf0e10cSrcweir --------------------------------------------------------------------*/ 1142cdf0e10cSrcweir 1143cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, ChapterHdl, ListBox *, EMPTYARG ) 1144cdf0e10cSrcweir { 1145cdf0e10cSrcweir sal_Bool bEnable = aChapterLevelLB.GetSelectEntryPos() != 0; 1146cdf0e10cSrcweir 1147cdf0e10cSrcweir aSeparatorED.Enable(bEnable); 1148cdf0e10cSrcweir aSeparatorFT.Enable(bEnable); 1149cdf0e10cSrcweir SeparatorHdl(); 1150cdf0e10cSrcweir 1151cdf0e10cSrcweir return 0; 1152cdf0e10cSrcweir } 1153cdf0e10cSrcweir 1154cdf0e10cSrcweir /*-------------------------------------------------------------------- 1155cdf0e10cSrcweir Beschreibung: 1156cdf0e10cSrcweir --------------------------------------------------------------------*/ 1157cdf0e10cSrcweir 1158cdf0e10cSrcweir IMPL_LINK( SwFldVarPage, SeparatorHdl, Edit *, EMPTYARG ) 1159cdf0e10cSrcweir { 1160cdf0e10cSrcweir sal_Bool bEnable = aSeparatorED.GetText().Len() != 0 || 1161cdf0e10cSrcweir aChapterLevelLB.GetSelectEntryPos() == 0; 1162cdf0e10cSrcweir EnableInsert(bEnable); 1163cdf0e10cSrcweir 1164cdf0e10cSrcweir return 0; 1165cdf0e10cSrcweir } 1166cdf0e10cSrcweir 1167cdf0e10cSrcweir /*-------------------------------------------------------------------- 1168cdf0e10cSrcweir Beschreibung: 1169cdf0e10cSrcweir --------------------------------------------------------------------*/ 1170cdf0e10cSrcweir 1171cdf0e10cSrcweir sal_Bool SwFldVarPage::FillItemSet(SfxItemSet& ) 1172cdf0e10cSrcweir { 1173cdf0e10cSrcweir sal_uInt16 nTypeId = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData(GetTypeSel()); 1174cdf0e10cSrcweir 1175cdf0e10cSrcweir String aVal(aValueED.GetText()); 1176cdf0e10cSrcweir String aName(aNameED.GetText()); 1177cdf0e10cSrcweir 1178cdf0e10cSrcweir sal_uInt16 nSubType = aSelectionLB.GetSelectEntryPos(); 1179cdf0e10cSrcweir if(nSubType == LISTBOX_ENTRY_NOTFOUND) 1180cdf0e10cSrcweir nSubType = 0; 1181cdf0e10cSrcweir else 1182cdf0e10cSrcweir nSubType = (sal_uInt16)(sal_uLong)aSelectionLB.GetEntryData(nSubType); 1183cdf0e10cSrcweir 1184cdf0e10cSrcweir sal_uLong nFormat; 1185cdf0e10cSrcweir 1186cdf0e10cSrcweir if (!aNumFormatLB.IsVisible()) 1187cdf0e10cSrcweir { 1188cdf0e10cSrcweir nFormat = aFormatLB.GetSelectEntryPos(); 1189cdf0e10cSrcweir 1190cdf0e10cSrcweir if(nFormat == LISTBOX_ENTRY_NOTFOUND) 1191cdf0e10cSrcweir nFormat = 0; 1192cdf0e10cSrcweir else 1193cdf0e10cSrcweir nFormat = (sal_uLong)aFormatLB.GetEntryData((sal_uInt16)nFormat); 1194cdf0e10cSrcweir } 1195cdf0e10cSrcweir else 1196cdf0e10cSrcweir { 1197cdf0e10cSrcweir nFormat = aNumFormatLB.GetFormat(); 1198cdf0e10cSrcweir 1199cdf0e10cSrcweir if (nFormat && nFormat != ULONG_MAX && aNumFormatLB.IsAutomaticLanguage()) 1200cdf0e10cSrcweir { 1201cdf0e10cSrcweir // Sprache auf Office-Sprache umstellen, da String im Office- 1202cdf0e10cSrcweir // Format vom Kalkulator erwartet wird und so in den Dlg 1203cdf0e10cSrcweir // eingegeben werden sollte 1204cdf0e10cSrcweir SwWrtShell *pSh = GetWrtShell(); 1205cdf0e10cSrcweir if(!pSh) 1206cdf0e10cSrcweir pSh = ::GetActiveWrtShell(); 1207cdf0e10cSrcweir if(pSh) 1208cdf0e10cSrcweir { 1209cdf0e10cSrcweir nFormat = SwValueField::GetSystemFormat(pSh->GetNumberFormatter(), nFormat); 1210cdf0e10cSrcweir } 1211cdf0e10cSrcweir } 1212cdf0e10cSrcweir } 1213cdf0e10cSrcweir sal_Unicode cSeparator = ' '; 1214cdf0e10cSrcweir switch (nTypeId) 1215cdf0e10cSrcweir { 1216cdf0e10cSrcweir case TYP_USERFLD: 1217cdf0e10cSrcweir { 1218cdf0e10cSrcweir nSubType = (nFormat == ULONG_MAX) ? nsSwGetSetExpType::GSE_STRING : nsSwGetSetExpType::GSE_EXPR; 1219cdf0e10cSrcweir 1220cdf0e10cSrcweir if (nFormat == ULONG_MAX && aNumFormatLB.GetSelectEntry() == SW_RESSTR(FMT_USERVAR_CMD)) 1221cdf0e10cSrcweir nSubType |= nsSwExtendedSubType::SUB_CMD; 1222cdf0e10cSrcweir 1223cdf0e10cSrcweir if (aInvisibleCB.IsChecked()) 1224cdf0e10cSrcweir nSubType |= nsSwExtendedSubType::SUB_INVISIBLE; 1225cdf0e10cSrcweir break; 1226cdf0e10cSrcweir } 1227cdf0e10cSrcweir case TYP_FORMELFLD: 1228cdf0e10cSrcweir { 1229cdf0e10cSrcweir nSubType = nsSwGetSetExpType::GSE_FORMULA; 1230cdf0e10cSrcweir if (aNumFormatLB.IsVisible() && nFormat == ULONG_MAX) 1231cdf0e10cSrcweir nSubType |= nsSwExtendedSubType::SUB_CMD; 1232cdf0e10cSrcweir break; 1233cdf0e10cSrcweir } 1234cdf0e10cSrcweir case TYP_GETFLD: 1235cdf0e10cSrcweir { 1236cdf0e10cSrcweir nSubType &= 0xff00; 1237cdf0e10cSrcweir if (aNumFormatLB.IsVisible() && nFormat == ULONG_MAX) 1238cdf0e10cSrcweir nSubType |= nsSwExtendedSubType::SUB_CMD; 1239cdf0e10cSrcweir break; 1240cdf0e10cSrcweir } 1241cdf0e10cSrcweir case TYP_INPUTFLD: 1242cdf0e10cSrcweir { 1243cdf0e10cSrcweir SwFieldType* pType = GetFldMgr().GetFldType(RES_USERFLD, aName); 1244cdf0e10cSrcweir nSubType = static_cast< sal_uInt16 >((nSubType & 0xff00) | ((pType) ? INP_USR : INP_VAR)); 1245cdf0e10cSrcweir break; 1246cdf0e10cSrcweir } 1247cdf0e10cSrcweir 1248cdf0e10cSrcweir case TYP_SETFLD: 1249cdf0e10cSrcweir { 1250cdf0e10cSrcweir if (IsFldDlgHtmlMode()) 1251cdf0e10cSrcweir { 1252cdf0e10cSrcweir nSubType = 0x0100; 1253cdf0e10cSrcweir nSubType = (nSubType & 0xff00) | nsSwGetSetExpType::GSE_STRING; 1254cdf0e10cSrcweir } 1255cdf0e10cSrcweir else 1256cdf0e10cSrcweir nSubType = (nSubType & 0xff00) | ((nFormat == ULONG_MAX) ? nsSwGetSetExpType::GSE_STRING : nsSwGetSetExpType::GSE_EXPR); 1257cdf0e10cSrcweir 1258cdf0e10cSrcweir if (aInvisibleCB.IsChecked()) 1259cdf0e10cSrcweir nSubType |= nsSwExtendedSubType::SUB_INVISIBLE; 1260cdf0e10cSrcweir break; 1261cdf0e10cSrcweir } 1262cdf0e10cSrcweir case TYP_SEQFLD: 1263cdf0e10cSrcweir { 1264cdf0e10cSrcweir // nSubType = nsSwGetSetExpType::GSE_SEQ; // nsSwGetSetExpType::GSE_SEQ wird im Fldmgr fest gesetzt, kann also entfallen 1265cdf0e10cSrcweir nSubType = aChapterLevelLB.GetSelectEntryPos(); 1266cdf0e10cSrcweir if (nSubType == 0) 1267cdf0e10cSrcweir nSubType = 0x7f; 1268cdf0e10cSrcweir else 1269cdf0e10cSrcweir { 1270cdf0e10cSrcweir nSubType--; 1271cdf0e10cSrcweir String sSeparator(aSeparatorED.GetText().GetChar(0)); 1272cdf0e10cSrcweir cSeparator = sSeparator.Len() ? sSeparator.GetChar(0) : ' '; 1273cdf0e10cSrcweir //nSubType |= (sal_uInt16)(((sal_uInt8)) << 8); 1274cdf0e10cSrcweir } 1275cdf0e10cSrcweir break; 1276cdf0e10cSrcweir } 1277cdf0e10cSrcweir case TYP_GETREFPAGEFLD: 1278cdf0e10cSrcweir if( SVX_NUM_CHAR_SPECIAL == nFormat ) 1279cdf0e10cSrcweir aVal = aValueED.GetText(); 1280cdf0e10cSrcweir break; 1281cdf0e10cSrcweir } 1282cdf0e10cSrcweir 1283cdf0e10cSrcweir if (!IsFldEdit() || 1284cdf0e10cSrcweir aNameED.GetSavedValue() != aNameED.GetText() || 1285cdf0e10cSrcweir aValueED.GetSavedValue() != aValueED.GetText() || 1286cdf0e10cSrcweir aSelectionLB.GetSavedValue() != aSelectionLB.GetSelectEntryPos() || 1287cdf0e10cSrcweir aFormatLB.GetSavedValue() != aFormatLB.GetSelectEntryPos() || 1288cdf0e10cSrcweir nOldFormat != aNumFormatLB.GetFormat() || 1289cdf0e10cSrcweir aInvisibleCB.GetState() != aInvisibleCB.GetSavedValue() || 1290cdf0e10cSrcweir aChapterLevelLB.GetSavedValue() != aChapterLevelLB.GetSelectEntryPos() || 1291cdf0e10cSrcweir aSeparatorED.GetSavedValue() != aSeparatorED.GetText()) 1292cdf0e10cSrcweir { 1293cdf0e10cSrcweir InsertFld( nTypeId, nSubType, aName, aVal, nFormat, 1294cdf0e10cSrcweir cSeparator, aNumFormatLB.IsAutomaticLanguage() ); 1295cdf0e10cSrcweir } 1296cdf0e10cSrcweir 1297cdf0e10cSrcweir UpdateSubType(); 1298cdf0e10cSrcweir 1299cdf0e10cSrcweir return sal_False; 1300cdf0e10cSrcweir } 1301cdf0e10cSrcweir 1302cdf0e10cSrcweir 1303cdf0e10cSrcweir /*-------------------------------------------------------------------- 1304cdf0e10cSrcweir Beschreibung: 1305cdf0e10cSrcweir --------------------------------------------------------------------*/ 1306cdf0e10cSrcweir 1307cdf0e10cSrcweir SfxTabPage* SwFldVarPage::Create( Window* pParent, 1308cdf0e10cSrcweir const SfxItemSet& rAttrSet ) 1309cdf0e10cSrcweir { 1310cdf0e10cSrcweir return ( new SwFldVarPage( pParent, rAttrSet ) ); 1311cdf0e10cSrcweir } 1312cdf0e10cSrcweir 1313cdf0e10cSrcweir /*-------------------------------------------------------------------- 1314cdf0e10cSrcweir Beschreibung: 1315cdf0e10cSrcweir --------------------------------------------------------------------*/ 1316cdf0e10cSrcweir 1317cdf0e10cSrcweir sal_uInt16 SwFldVarPage::GetGroup() 1318cdf0e10cSrcweir { 1319cdf0e10cSrcweir return GRP_VAR; 1320cdf0e10cSrcweir } 1321cdf0e10cSrcweir 1322cdf0e10cSrcweir /*-------------------------------------------------------------------- 1323cdf0e10cSrcweir Beschreibung: 1324cdf0e10cSrcweir --------------------------------------------------------------------*/ 1325cdf0e10cSrcweir 1326cdf0e10cSrcweir SelectionListBox::SelectionListBox( SwFldVarPage* pDialog, const ResId& rResId ) : 1327cdf0e10cSrcweir ListBox (pDialog, rResId), 1328cdf0e10cSrcweir pDlg (pDialog), 1329cdf0e10cSrcweir bCallAddSelection(sal_False) 1330cdf0e10cSrcweir { 1331cdf0e10cSrcweir } 1332cdf0e10cSrcweir 1333cdf0e10cSrcweir /*-------------------------------------------------------------------- 1334cdf0e10cSrcweir Beschreibung: 1335cdf0e10cSrcweir --------------------------------------------------------------------*/ 1336cdf0e10cSrcweir 1337cdf0e10cSrcweir long SelectionListBox::PreNotify( NotifyEvent& rNEvt ) 1338cdf0e10cSrcweir { 1339cdf0e10cSrcweir long nHandled = ListBox::PreNotify( rNEvt ); 1340cdf0e10cSrcweir //sal_Bool bAddSel = sal_False; 1341cdf0e10cSrcweir if ( rNEvt.GetType() == EVENT_KEYUP ) 1342cdf0e10cSrcweir { 1343cdf0e10cSrcweir const KeyEvent* pKEvt = rNEvt.GetKeyEvent(); 1344cdf0e10cSrcweir const KeyCode aKeyCode = pKEvt->GetKeyCode(); 1345cdf0e10cSrcweir const sal_uInt16 nModifier = aKeyCode.GetModifier(); 1346cdf0e10cSrcweir if( aKeyCode.GetCode() == KEY_SPACE && !nModifier) 1347cdf0e10cSrcweir // bAddSel = sal_True; 1348cdf0e10cSrcweir bCallAddSelection = sal_True; 1349cdf0e10cSrcweir } 1350cdf0e10cSrcweir if ( rNEvt.GetType() == EVENT_MOUSEBUTTONDOWN ) 1351cdf0e10cSrcweir { 1352cdf0e10cSrcweir const MouseEvent* pMEvt = rNEvt.GetMouseEvent(); 1353cdf0e10cSrcweir 1354cdf0e10cSrcweir if (pMEvt && (pMEvt->IsMod1() || pMEvt->IsMod2())) // Alt oder Ctrl 1355cdf0e10cSrcweir //bAddSel = sal_True; 1356cdf0e10cSrcweir bCallAddSelection = sal_True; 1357cdf0e10cSrcweir } 1358cdf0e10cSrcweir 1359cdf0e10cSrcweir // if (bAddSel) 1360cdf0e10cSrcweir // pDlg->AddSelection(this); 1361cdf0e10cSrcweir 1362cdf0e10cSrcweir return nHandled; 1363cdf0e10cSrcweir } 1364cdf0e10cSrcweir /* -----------------12.01.99 11:14------------------- 1365cdf0e10cSrcweir * 1366cdf0e10cSrcweir * --------------------------------------------------*/ 1367cdf0e10cSrcweir void SwFldVarPage::FillUserData() 1368cdf0e10cSrcweir { 1369cdf0e10cSrcweir String sData(String::CreateFromAscii(USER_DATA_VERSION)); 1370cdf0e10cSrcweir sData += ';'; 1371cdf0e10cSrcweir sal_uInt16 nTypeSel = aTypeLB.GetSelectEntryPos(); 1372cdf0e10cSrcweir if( LISTBOX_ENTRY_NOTFOUND == nTypeSel ) 1373cdf0e10cSrcweir nTypeSel = USHRT_MAX; 1374cdf0e10cSrcweir else 1375cdf0e10cSrcweir nTypeSel = (sal_uInt16)(sal_uLong)aTypeLB.GetEntryData( nTypeSel ); 1376cdf0e10cSrcweir sData += String::CreateFromInt32( nTypeSel ); 1377cdf0e10cSrcweir SetUserData(sData); 1378cdf0e10cSrcweir } 1379cdf0e10cSrcweir 1380