1b3f79822SAndrew Rist /************************************************************** 2b3f79822SAndrew Rist * 3b3f79822SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4b3f79822SAndrew Rist * or more contributor license agreements. See the NOTICE file 5b3f79822SAndrew Rist * distributed with this work for additional information 6b3f79822SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7b3f79822SAndrew Rist * to you under the Apache License, Version 2.0 (the 8b3f79822SAndrew Rist * "License"); you may not use this file except in compliance 9b3f79822SAndrew Rist * with the License. You may obtain a copy of the License at 10b3f79822SAndrew Rist * 11b3f79822SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13b3f79822SAndrew Rist * Unless required by applicable law or agreed to in writing, 14b3f79822SAndrew Rist * software distributed under the License is distributed on an 15b3f79822SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16b3f79822SAndrew Rist * KIND, either express or implied. See the License for the 17b3f79822SAndrew Rist * specific language governing permissions and limitations 18b3f79822SAndrew Rist * under the License. 19b3f79822SAndrew Rist * 20b3f79822SAndrew Rist *************************************************************/ 21b3f79822SAndrew Rist 22b3f79822SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_sc.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir 28cdf0e10cSrcweir 29cdf0e10cSrcweir // INCLUDE --------------------------------------------------------------- 30cdf0e10cSrcweir 31cdf0e10cSrcweir #include <editeng/editview.hxx> 32cdf0e10cSrcweir #include <sfx2/bindings.hxx> 33cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 34cdf0e10cSrcweir #include <sfx2/objsh.hxx> 35cdf0e10cSrcweir #include <sfx2/viewsh.hxx> 36cdf0e10cSrcweir 37cdf0e10cSrcweir #include "sc.hrc" 38cdf0e10cSrcweir #include "global.hxx" // ScAddress 39cdf0e10cSrcweir #include "scresid.hxx" 40cdf0e10cSrcweir #include "reffact.hxx" 41cdf0e10cSrcweir #include "document.hxx" 42cdf0e10cSrcweir #include "cell.hxx" 43cdf0e10cSrcweir #include "scmod.hxx" 44cdf0e10cSrcweir #include "inputhdl.hxx" 45cdf0e10cSrcweir #include "tabvwsh.hxx" 46cdf0e10cSrcweir #include "appoptio.hxx" 47cdf0e10cSrcweir #include "compiler.hxx" 48cdf0e10cSrcweir 49cdf0e10cSrcweir #include "dwfunctr.hrc" 50cdf0e10cSrcweir #include "dwfunctr.hxx" 51cdf0e10cSrcweir 52cdf0e10cSrcweir // ----------------------------------------------------------------------- 53cdf0e10cSrcweir 54cdf0e10cSrcweir #define ARG_SEPERATOR String("; ") 55cdf0e10cSrcweir SFX_IMPL_DOCKINGWINDOW( ScFunctionChildWindow, FID_FUNCTION_BOX ) 56cdf0e10cSrcweir 57cdf0e10cSrcweir /************************************************************************* 58cdf0e10cSrcweir #* Member: ScFunctionChildWindow Datum:06.10.97 59cdf0e10cSrcweir #*------------------------------------------------------------------------ 60cdf0e10cSrcweir #* 61cdf0e10cSrcweir #* Klasse: ScFunctionChildWindow 62cdf0e10cSrcweir #* 63cdf0e10cSrcweir #* Funktion: Konstruktor der Klasse ScFunctionChildWindow 64cdf0e10cSrcweir #* Ableitung vom SfxChildWindow als "Behaelter" fuer 65cdf0e10cSrcweir #* Funktions- Fenster in Clac 66cdf0e10cSrcweir #* 67cdf0e10cSrcweir #* Input: --- 68cdf0e10cSrcweir #* 69cdf0e10cSrcweir #* Output: --- 70cdf0e10cSrcweir #* 71cdf0e10cSrcweir #************************************************************************/ 72cdf0e10cSrcweir 73cdf0e10cSrcweir __EXPORT ScFunctionChildWindow::ScFunctionChildWindow( Window* pParentP, 74cdf0e10cSrcweir sal_uInt16 nId, 75cdf0e10cSrcweir SfxBindings* pBindings, 76cdf0e10cSrcweir SfxChildWinInfo* pInfo ) : 77cdf0e10cSrcweir SfxChildWindow( pParentP, nId ) 78cdf0e10cSrcweir { 79cdf0e10cSrcweir ScFunctionDockWin* pWin = new ScFunctionDockWin( pBindings, this, 80cdf0e10cSrcweir pParentP, ScResId( FID_FUNCTION_BOX ) ); 81cdf0e10cSrcweir pWindow = pWin; 82cdf0e10cSrcweir 83cdf0e10cSrcweir eChildAlignment = SFX_ALIGN_RIGHT; 84cdf0e10cSrcweir 85cdf0e10cSrcweir pWin->Initialize( pInfo ); 86cdf0e10cSrcweir } 87cdf0e10cSrcweir 88cdf0e10cSrcweir /************************************************************************* 89cdf0e10cSrcweir #* Member: ScFunctionDockWin Datum:06.10.97 90cdf0e10cSrcweir #*------------------------------------------------------------------------ 91cdf0e10cSrcweir #* 92cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 93cdf0e10cSrcweir #* 94cdf0e10cSrcweir #* Funktion: Konstruktor der Klasse ScFunctionDockWin 95cdf0e10cSrcweir #* 96cdf0e10cSrcweir #* Input: Sfx- Verknuepfungen, Fenster, Resource 97cdf0e10cSrcweir #* 98cdf0e10cSrcweir #* Output: --- 99cdf0e10cSrcweir #* 100cdf0e10cSrcweir #************************************************************************/ 101cdf0e10cSrcweir 102cdf0e10cSrcweir ScFunctionDockWin::ScFunctionDockWin( SfxBindings* pBindingsP, 103cdf0e10cSrcweir SfxChildWindow *pCW, Window* pParent, const ResId& rResId ) : 104cdf0e10cSrcweir 105cdf0e10cSrcweir SfxDockingWindow( pBindingsP, pCW, pParent, rResId ), 106cdf0e10cSrcweir aPrivatSplit ( this, ResId( FT_SPLIT, *rResId.GetResMgr() ),SC_SPLIT_VERT), 107cdf0e10cSrcweir aCatBox ( this, ResId( CB_CAT, *rResId.GetResMgr() ) ), 108cdf0e10cSrcweir aFuncList ( this, ResId( LB_FUNC, *rResId.GetResMgr() ) ), 109cdf0e10cSrcweir aDDFuncList ( this, ResId( DDLB_FUNC, *rResId.GetResMgr() ) ), 110cdf0e10cSrcweir aInsertButton ( this, ResId( IMB_INSERT, *rResId.GetResMgr() ) ), 111cdf0e10cSrcweir aFiFuncDesc ( this, ResId( FI_FUNCDESC, *rResId.GetResMgr() ) ), 112cdf0e10cSrcweir aOldSize (0,0) 113cdf0e10cSrcweir { 114cdf0e10cSrcweir FreeResource(); 115cdf0e10cSrcweir InitLRUList(); 116cdf0e10cSrcweir SetStyle(GetStyle()|WB_CLIPCHILDREN); 117cdf0e10cSrcweir 118cdf0e10cSrcweir aTimer.SetTimeout(200); 119cdf0e10cSrcweir aTimer.SetTimeoutHdl(LINK( this, ScFunctionDockWin, TimerHdl)); 120cdf0e10cSrcweir 121cdf0e10cSrcweir eSfxNewAlignment=GetAlignment(); 122cdf0e10cSrcweir eSfxOldAlignment=eSfxNewAlignment; 123cdf0e10cSrcweir aFiFuncDesc.SetUpdateMode(sal_True); 124cdf0e10cSrcweir pAllFuncList=&aFuncList; 125cdf0e10cSrcweir aDDFuncList.Disable(); 126cdf0e10cSrcweir aDDFuncList.Hide(); 127cdf0e10cSrcweir nArgs=0; 128cdf0e10cSrcweir nDockMode=0; 129cdf0e10cSrcweir bSizeFlag=sal_False; 130cdf0e10cSrcweir aCatBox.SetDropDownLineCount(9); 131cdf0e10cSrcweir Font aFont=aFiFuncDesc.GetFont(); 132cdf0e10cSrcweir aFont.SetColor(Color(COL_BLACK)); 133cdf0e10cSrcweir aFiFuncDesc.SetFont(aFont); 134cdf0e10cSrcweir aFiFuncDesc.SetBackground( GetBackground() ); //! never transparent? 135cdf0e10cSrcweir //? SetBackground(); 136cdf0e10cSrcweir 137cdf0e10cSrcweir Link aLink=LINK( this, ScFunctionDockWin, SelHdl); 138cdf0e10cSrcweir aCatBox.SetSelectHdl(aLink); 139cdf0e10cSrcweir aFuncList.SetSelectHdl(aLink); 140cdf0e10cSrcweir aDDFuncList.SetSelectHdl(aLink); 141cdf0e10cSrcweir 142cdf0e10cSrcweir Link a2Link=LINK( this, ScFunctionDockWin, SetSelectionHdl); 143cdf0e10cSrcweir aFuncList.SetDoubleClickHdl(a2Link); 144cdf0e10cSrcweir aDDFuncList.SetSelectHdl(aLink); 145cdf0e10cSrcweir aInsertButton.SetClickHdl(a2Link); 146cdf0e10cSrcweir 147cdf0e10cSrcweir Link a3Link=LINK( this, ScFunctionDockWin, SetSplitHdl); 148cdf0e10cSrcweir aPrivatSplit.SetCtrModifiedHdl(a3Link); 149cdf0e10cSrcweir StartListening( *pBindingsP, sal_True ); 150cdf0e10cSrcweir 151cdf0e10cSrcweir Point aTopLeft=aCatBox.GetPosPixel(); 152cdf0e10cSrcweir //String aString=aCatBox.GetEntry( 0)+String("www"); 153cdf0e10cSrcweir String aString=String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ww")); 154cdf0e10cSrcweir Size aTxtSize( aFiFuncDesc.GetTextWidth(aString), aFiFuncDesc.GetTextHeight() ); 155cdf0e10cSrcweir nMinWidth=aTxtSize.Width()+aTopLeft.X() 156cdf0e10cSrcweir +2*aFuncList.GetPosPixel().X(); 157cdf0e10cSrcweir nMinHeight=19*aTxtSize.Height(); 158cdf0e10cSrcweir aCatBox.SelectEntryPos(0); 159cdf0e10cSrcweir 160cdf0e10cSrcweir Range aYRange(3*aTxtSize.Height()+aFuncList.GetPosPixel().Y(), 161cdf0e10cSrcweir GetOutputSizePixel().Height()-2*aTxtSize.Height()); 162cdf0e10cSrcweir aPrivatSplit.SetYRange(aYRange); 163cdf0e10cSrcweir SelHdl(&aCatBox); 164cdf0e10cSrcweir bInit=sal_True; 165cdf0e10cSrcweir } 166cdf0e10cSrcweir 167cdf0e10cSrcweir /************************************************************************* 168cdf0e10cSrcweir #* Member: ScFunctionDockWin Datum:06.10.97 169cdf0e10cSrcweir #*------------------------------------------------------------------------ 170cdf0e10cSrcweir #* 171cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 172cdf0e10cSrcweir #* 173cdf0e10cSrcweir #* Funktion: Destruktor der Klasse ScFunctionDockWin 174cdf0e10cSrcweir #* 175cdf0e10cSrcweir #* Input: --- 176cdf0e10cSrcweir #* 177cdf0e10cSrcweir #* Output: --- 178cdf0e10cSrcweir #* 179cdf0e10cSrcweir #************************************************************************/ 180cdf0e10cSrcweir 181cdf0e10cSrcweir __EXPORT ScFunctionDockWin::~ScFunctionDockWin() 182cdf0e10cSrcweir { 183cdf0e10cSrcweir EndListening( GetBindings() ); 184cdf0e10cSrcweir } 185cdf0e10cSrcweir 186cdf0e10cSrcweir /************************************************************************* 187cdf0e10cSrcweir #* Member: UpdateFunctionList Datum:06.10.97 188cdf0e10cSrcweir #*------------------------------------------------------------------------ 189cdf0e10cSrcweir #* 190cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 191cdf0e10cSrcweir #* 192cdf0e10cSrcweir #* Funktion: Aktualisiert die Liste der Funktionen ab- 193cdf0e10cSrcweir #* haengig von der eingestellten Kategorie. 194cdf0e10cSrcweir #* 195cdf0e10cSrcweir #* Input: --- 196cdf0e10cSrcweir #* 197cdf0e10cSrcweir #* Output: --- 198cdf0e10cSrcweir #* 199cdf0e10cSrcweir #************************************************************************/ 200cdf0e10cSrcweir 201cdf0e10cSrcweir void ScFunctionDockWin::InitLRUList() 202cdf0e10cSrcweir { 203cdf0e10cSrcweir const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions(); 204cdf0e10cSrcweir sal_uInt16 nLRUFuncCount = Min( rAppOpt.GetLRUFuncListCount(), (sal_uInt16)LRU_MAX ); 205cdf0e10cSrcweir sal_uInt16* pLRUListIds = rAppOpt.GetLRUFuncList(); 206cdf0e10cSrcweir 207cdf0e10cSrcweir sal_uInt16 i; 208cdf0e10cSrcweir for ( i=0; i<LRU_MAX; i++ ) 209cdf0e10cSrcweir aLRUList[i] = NULL; 210cdf0e10cSrcweir 211cdf0e10cSrcweir if ( pLRUListIds ) 212cdf0e10cSrcweir { 213cdf0e10cSrcweir ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr(); 214cdf0e10cSrcweir for ( i=0; i<nLRUFuncCount; i++ ) 215cdf0e10cSrcweir aLRUList[i] = pFuncMgr->Get( pLRUListIds[i] ); 216cdf0e10cSrcweir } 217cdf0e10cSrcweir 218cdf0e10cSrcweir sal_uInt16 nSelPos = aCatBox.GetSelectEntryPos(); 219cdf0e10cSrcweir 220cdf0e10cSrcweir if(nSelPos == 0) 221cdf0e10cSrcweir UpdateFunctionList(); 222cdf0e10cSrcweir } 223cdf0e10cSrcweir 224cdf0e10cSrcweir /************************************************************************* 225cdf0e10cSrcweir #* Member: UpdateFunctionList Datum:10.12.99 226cdf0e10cSrcweir #*------------------------------------------------------------------------ 227cdf0e10cSrcweir #* 228cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 229cdf0e10cSrcweir #* 230cdf0e10cSrcweir #* Funktion: Aktualisiert die Liste der zuletzt verwendeten Funktionen. 231cdf0e10cSrcweir #* 232cdf0e10cSrcweir #* Input: --- 233cdf0e10cSrcweir #* 234cdf0e10cSrcweir #* Output: --- 235cdf0e10cSrcweir #* 236cdf0e10cSrcweir #************************************************************************/ 237cdf0e10cSrcweir 238cdf0e10cSrcweir void ScFunctionDockWin::UpdateLRUList() 239cdf0e10cSrcweir { 240cdf0e10cSrcweir if (pFuncDesc && pFuncDesc->nFIndex!=0) 241cdf0e10cSrcweir { 242cdf0e10cSrcweir ScModule* pScMod = SC_MOD(); 243cdf0e10cSrcweir pScMod->InsertEntryToLRUList(pFuncDesc->nFIndex); 244cdf0e10cSrcweir } 245cdf0e10cSrcweir } 246cdf0e10cSrcweir 247cdf0e10cSrcweir 248cdf0e10cSrcweir /************************************************************************* 249cdf0e10cSrcweir #* Member: SetSize Datum:06.10.97 250cdf0e10cSrcweir #*------------------------------------------------------------------------ 251cdf0e10cSrcweir #* 252cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 253cdf0e10cSrcweir #* 254cdf0e10cSrcweir #* Funktion: Groesse fuer die einzelnen Controls einzustellen. 255cdf0e10cSrcweir #* 256cdf0e10cSrcweir #* Input: --- 257cdf0e10cSrcweir #* 258cdf0e10cSrcweir #* Output: --- 259cdf0e10cSrcweir #* 260cdf0e10cSrcweir #************************************************************************/ 261cdf0e10cSrcweir 262cdf0e10cSrcweir void ScFunctionDockWin::SetSize() 263cdf0e10cSrcweir { 264cdf0e10cSrcweir sal_uInt16 nSelEntry=0; 265cdf0e10cSrcweir SfxChildAlignment aChildAlign=eSfxOldAlignment;//GetAlignment(); 266cdf0e10cSrcweir short nNewDockMode; 267cdf0e10cSrcweir switch(aChildAlign) 268cdf0e10cSrcweir { 269cdf0e10cSrcweir case SFX_ALIGN_HIGHESTTOP: 270cdf0e10cSrcweir case SFX_ALIGN_TOP: 271cdf0e10cSrcweir case SFX_ALIGN_LOWESTTOP: 272cdf0e10cSrcweir case SFX_ALIGN_LOWESTBOTTOM: 273cdf0e10cSrcweir case SFX_ALIGN_BOTTOM: 274cdf0e10cSrcweir case SFX_ALIGN_TOOLBOXTOP: 275cdf0e10cSrcweir case SFX_ALIGN_TOOLBOXBOTTOM: 276cdf0e10cSrcweir 277cdf0e10cSrcweir 278cdf0e10cSrcweir nNewDockMode=1; 279cdf0e10cSrcweir if(nDockMode!=nNewDockMode) 280cdf0e10cSrcweir { 281cdf0e10cSrcweir nDockMode=nNewDockMode; 282cdf0e10cSrcweir nSelEntry=aFuncList.GetSelectEntryPos(); 283cdf0e10cSrcweir aFuncList.Clear(); 284cdf0e10cSrcweir aFiFuncDesc.SetPosPixel(aFuncList.GetPosPixel()); 285cdf0e10cSrcweir aDDFuncList.Enable(); 286cdf0e10cSrcweir aDDFuncList.Show(); 287cdf0e10cSrcweir aPrivatSplit.Disable(); 288cdf0e10cSrcweir aPrivatSplit.Hide(); 289cdf0e10cSrcweir aFuncList.Disable(); 290cdf0e10cSrcweir aFuncList.Hide(); 291cdf0e10cSrcweir pAllFuncList=&aDDFuncList; 292cdf0e10cSrcweir SelHdl(&aCatBox); 293cdf0e10cSrcweir aDDFuncList.SelectEntryPos(nSelEntry); 294cdf0e10cSrcweir } 295cdf0e10cSrcweir break; 296cdf0e10cSrcweir 297cdf0e10cSrcweir default: nNewDockMode=0; 298cdf0e10cSrcweir if(nDockMode!=nNewDockMode) 299cdf0e10cSrcweir { 300cdf0e10cSrcweir nDockMode=nNewDockMode; 301cdf0e10cSrcweir nSelEntry=aDDFuncList.GetSelectEntryPos(); 302cdf0e10cSrcweir aDDFuncList.Clear(); 303cdf0e10cSrcweir aDDFuncList.Disable(); 304cdf0e10cSrcweir aDDFuncList.Hide(); 305cdf0e10cSrcweir aPrivatSplit.Enable(); 306cdf0e10cSrcweir aPrivatSplit.Show(); 307cdf0e10cSrcweir aFuncList.Enable(); 308cdf0e10cSrcweir aFuncList.Show(); 309cdf0e10cSrcweir pAllFuncList=&aFuncList; 310cdf0e10cSrcweir SelHdl(&aCatBox); 311cdf0e10cSrcweir aFuncList.SelectEntryPos(nSelEntry); 312cdf0e10cSrcweir } 313cdf0e10cSrcweir break; 314cdf0e10cSrcweir } 315cdf0e10cSrcweir 316cdf0e10cSrcweir if(nDockMode==0) 317cdf0e10cSrcweir { 318cdf0e10cSrcweir SetLeftRightSize(); 319cdf0e10cSrcweir } 320cdf0e10cSrcweir else 321cdf0e10cSrcweir { 322cdf0e10cSrcweir SetTopBottonSize(); 323cdf0e10cSrcweir } 324cdf0e10cSrcweir } 325cdf0e10cSrcweir /************************************************************************* 326cdf0e10cSrcweir #* Member: SetLeftRightSize Datum:15.10.97 327cdf0e10cSrcweir #*------------------------------------------------------------------------ 328cdf0e10cSrcweir #* 329cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 330cdf0e10cSrcweir #* 331cdf0e10cSrcweir #* Funktion: Groesse fuer die einzelnen Controls einstellen, 332cdf0e10cSrcweir #* wenn Links oder Rechts angedockt wird. 333cdf0e10cSrcweir #* 334cdf0e10cSrcweir #* Input: --- 335cdf0e10cSrcweir #* 336cdf0e10cSrcweir #* Output: --- 337cdf0e10cSrcweir #* 338cdf0e10cSrcweir #************************************************************************/ 339cdf0e10cSrcweir 340cdf0e10cSrcweir void ScFunctionDockWin::SetLeftRightSize() 341cdf0e10cSrcweir { 342cdf0e10cSrcweir if(bSizeFlag==sal_False) 343cdf0e10cSrcweir { 344cdf0e10cSrcweir bSizeFlag=sal_True; 345cdf0e10cSrcweir 346cdf0e10cSrcweir Size aDiffSize=GetSizePixel(); 347cdf0e10cSrcweir Size aNewSize=GetOutputSizePixel(); 348cdf0e10cSrcweir aDiffSize.Width()-=aNewSize.Width(); 349cdf0e10cSrcweir aDiffSize.Height()-=aNewSize.Height(); 350cdf0e10cSrcweir 351cdf0e10cSrcweir //@ SetUpdateMode( sal_False); 352cdf0e10cSrcweir 353cdf0e10cSrcweir String aString = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ww")); 354cdf0e10cSrcweir 355cdf0e10cSrcweir Size aTxtSize( aFuncList.GetTextWidth(aString), aFuncList.GetTextHeight() ); 356cdf0e10cSrcweir 357cdf0e10cSrcweir Range aYRange(3*aTxtSize.Height()+aFuncList.GetPosPixel().Y(), 358cdf0e10cSrcweir GetOutputSizePixel().Height()-2*aTxtSize.Height()); 359cdf0e10cSrcweir aPrivatSplit.SetYRange(aYRange); 360cdf0e10cSrcweir 361cdf0e10cSrcweir 362cdf0e10cSrcweir if(aOldSize.Width()!=aNewSize.Width()) 363cdf0e10cSrcweir SetMyWidthLeRi(aNewSize); 364cdf0e10cSrcweir 365cdf0e10cSrcweir if(aOldSize.Height()!=aNewSize.Height()) 366cdf0e10cSrcweir SetMyHeightLeRi(aNewSize); 367cdf0e10cSrcweir 368cdf0e10cSrcweir aOldSize=aNewSize; 369cdf0e10cSrcweir aNewSize.Width()+=aDiffSize.Width(); 370cdf0e10cSrcweir aNewSize.Height()+=aDiffSize.Height(); 371cdf0e10cSrcweir //SetSizePixel(aNewSize); 372cdf0e10cSrcweir //@ SetUpdateMode( sal_True); 373cdf0e10cSrcweir bSizeFlag=sal_False; 374cdf0e10cSrcweir } 375cdf0e10cSrcweir 376cdf0e10cSrcweir } 377cdf0e10cSrcweir /************************************************************************* 378cdf0e10cSrcweir #* Member: SetTopBottonSize Datum:15.10.97 379cdf0e10cSrcweir #*------------------------------------------------------------------------ 380cdf0e10cSrcweir #* 381cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 382cdf0e10cSrcweir #* 383cdf0e10cSrcweir #* Funktion: Groesse fuer die einzelnen Controls einzustellen. 384cdf0e10cSrcweir #* wenn oben oder unten angedockt wird. 385cdf0e10cSrcweir #* 386cdf0e10cSrcweir #* Input: --- 387cdf0e10cSrcweir #* 388cdf0e10cSrcweir #* Output: --- 389cdf0e10cSrcweir #* 390cdf0e10cSrcweir #************************************************************************/ 391cdf0e10cSrcweir 392cdf0e10cSrcweir void ScFunctionDockWin::SetTopBottonSize() 393cdf0e10cSrcweir { 394cdf0e10cSrcweir if(bSizeFlag==sal_False) 395cdf0e10cSrcweir { 396cdf0e10cSrcweir bSizeFlag=sal_True; 397cdf0e10cSrcweir Size aDiffSize=GetSizePixel(); 398cdf0e10cSrcweir Size aNewSize=GetOutputSizePixel(); 399cdf0e10cSrcweir aDiffSize.Width()-=aNewSize.Width(); 400cdf0e10cSrcweir aDiffSize.Height()-=aNewSize.Height(); 401cdf0e10cSrcweir 402cdf0e10cSrcweir SetMyWidthToBo(aNewSize); 403cdf0e10cSrcweir SetMyHeightToBo(aNewSize); 404cdf0e10cSrcweir 405cdf0e10cSrcweir aNewSize.Width()+=aDiffSize.Width(); 406cdf0e10cSrcweir aNewSize.Height()+=aDiffSize.Height(); 407cdf0e10cSrcweir //SetSizePixel(aNewSize); 408cdf0e10cSrcweir //@ SetUpdateMode( sal_True); 409cdf0e10cSrcweir bSizeFlag=sal_False; 410cdf0e10cSrcweir } 411cdf0e10cSrcweir } 412cdf0e10cSrcweir 413cdf0e10cSrcweir /************************************************************************* 414cdf0e10cSrcweir #* Member: SetMyWidthLeRi Datum:15.10.97 415cdf0e10cSrcweir #*------------------------------------------------------------------------ 416cdf0e10cSrcweir #* 417cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 418cdf0e10cSrcweir #* 419cdf0e10cSrcweir #* Funktion: Breite fuer die einzelnen Controls und 420cdf0e10cSrcweir #* das Fenster einstellen,wenn Li oder Re 421cdf0e10cSrcweir #* 422cdf0e10cSrcweir #* Input: neue Fenstergroesse 423cdf0e10cSrcweir #* 424cdf0e10cSrcweir #* Output: --- 425cdf0e10cSrcweir #* 426cdf0e10cSrcweir #************************************************************************/ 427cdf0e10cSrcweir 428cdf0e10cSrcweir void ScFunctionDockWin::SetMyWidthLeRi(Size &aNewSize) 429cdf0e10cSrcweir { 430cdf0e10cSrcweir if((sal_uLong)aNewSize.Width()<nMinWidth) aNewSize.Width()=nMinWidth; 431cdf0e10cSrcweir 432cdf0e10cSrcweir Size aCDSize=aCatBox.GetSizePixel(); 433cdf0e10cSrcweir Size aFLSize=aFuncList.GetSizePixel(); 434cdf0e10cSrcweir Size aSplitterSize=aPrivatSplit.GetSizePixel(); 435cdf0e10cSrcweir Size aFDSize=aFiFuncDesc.GetSizePixel(); 436cdf0e10cSrcweir 437cdf0e10cSrcweir Point aCDTopLeft=aCatBox.GetPosPixel(); 438cdf0e10cSrcweir Point aFLTopLeft=aFuncList.GetPosPixel(); 439cdf0e10cSrcweir Point aSplitterTopLeft=aPrivatSplit.GetPosPixel(); 440cdf0e10cSrcweir Point aFDTopLeft=aFiFuncDesc.GetPosPixel(); 441cdf0e10cSrcweir 442cdf0e10cSrcweir aCDSize.Width()=aNewSize.Width()-aCDTopLeft.X()-aFLTopLeft.X(); 443cdf0e10cSrcweir aFLSize.Width()=aNewSize.Width()-2*aFLTopLeft.X(); 444cdf0e10cSrcweir aFDSize.Width()=aFLSize.Width(); 445cdf0e10cSrcweir aSplitterSize.Width()=aFLSize.Width(); 446cdf0e10cSrcweir 447cdf0e10cSrcweir aCatBox.SetSizePixel(aCDSize); 448cdf0e10cSrcweir aFuncList.SetSizePixel(aFLSize); 449cdf0e10cSrcweir aPrivatSplit.SetSizePixel(aSplitterSize); 450cdf0e10cSrcweir aFiFuncDesc.SetSizePixel(aFDSize); 451cdf0e10cSrcweir } 452cdf0e10cSrcweir 453cdf0e10cSrcweir /************************************************************************* 454cdf0e10cSrcweir #* Member: SetHeight Datum:06.10.97 455cdf0e10cSrcweir #*------------------------------------------------------------------------ 456cdf0e10cSrcweir #* 457cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 458cdf0e10cSrcweir #* 459cdf0e10cSrcweir #* Funktion: Hoehe fuer die einzelnen Controls und 460cdf0e10cSrcweir #* das Fenster einstellen bei Li oder Re 461cdf0e10cSrcweir #* 462cdf0e10cSrcweir #* Input: neue Fenstergroesse 463cdf0e10cSrcweir #* 464cdf0e10cSrcweir #* Output: --- 465cdf0e10cSrcweir #* 466cdf0e10cSrcweir #************************************************************************/ 467cdf0e10cSrcweir 468cdf0e10cSrcweir void ScFunctionDockWin::SetMyHeightLeRi(Size &aNewSize) 469cdf0e10cSrcweir { 470cdf0e10cSrcweir if((sal_uLong)aNewSize.Height()<nMinHeight) aNewSize.Height()=nMinHeight; 471cdf0e10cSrcweir 472cdf0e10cSrcweir Size aFLSize=aFuncList.GetSizePixel(); 473cdf0e10cSrcweir Size aSplitterSize=aPrivatSplit.GetSizePixel(); 474cdf0e10cSrcweir Size aFDSize=aFiFuncDesc.GetSizePixel(); 475cdf0e10cSrcweir 476cdf0e10cSrcweir Point aFLTopLeft=aFuncList.GetPosPixel(); 477cdf0e10cSrcweir Point aSplitterTopLeft=aPrivatSplit.GetPosPixel(); 478cdf0e10cSrcweir Point aFDTopLeft=aFiFuncDesc.GetPosPixel(); 479cdf0e10cSrcweir 480cdf0e10cSrcweir long nTxtHeight = aFuncList.GetTextHeight(); 481cdf0e10cSrcweir 482cdf0e10cSrcweir short nY=(short)(3*nTxtHeight+ 483cdf0e10cSrcweir aFuncList.GetPosPixel().Y()+aSplitterSize.Height()); 484cdf0e10cSrcweir 485cdf0e10cSrcweir aFDTopLeft.Y()=aNewSize.Height()-aFDSize.Height()-4; 486cdf0e10cSrcweir if(nY>aFDTopLeft.Y()) 487cdf0e10cSrcweir { 488cdf0e10cSrcweir aFDSize.Height()-=nY-aFDTopLeft.Y(); 489cdf0e10cSrcweir aFDTopLeft.Y()=nY; 490cdf0e10cSrcweir } 491cdf0e10cSrcweir aSplitterTopLeft.Y()=aFDTopLeft.Y()-aSplitterSize.Height()-1; 492cdf0e10cSrcweir aFLSize.Height()=aSplitterTopLeft.Y()-aFLTopLeft.Y()-1; 493cdf0e10cSrcweir 494cdf0e10cSrcweir aFuncList.SetSizePixel(aFLSize); 495cdf0e10cSrcweir aPrivatSplit.SetPosPixel(aSplitterTopLeft); 496cdf0e10cSrcweir aFiFuncDesc.SetPosPixel(aFDTopLeft); 497cdf0e10cSrcweir aFiFuncDesc.SetSizePixel(aFDSize); 498cdf0e10cSrcweir 499cdf0e10cSrcweir } 500cdf0e10cSrcweir 501cdf0e10cSrcweir /************************************************************************* 502cdf0e10cSrcweir #* Member: SetMyWidthToBo Datum:16.10.97 503cdf0e10cSrcweir #*------------------------------------------------------------------------ 504cdf0e10cSrcweir #* 505cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 506cdf0e10cSrcweir #* 507cdf0e10cSrcweir #* Funktion: Breite fuer die einzelnen Controls und 508cdf0e10cSrcweir #* das Fenster einstellen, wenn oben oder 509cdf0e10cSrcweir #* unten angedockt werden soll. 510cdf0e10cSrcweir #* 511cdf0e10cSrcweir #* Input: neue Fenstergroesse 512cdf0e10cSrcweir #* 513cdf0e10cSrcweir #* Output: --- 514cdf0e10cSrcweir #* 515cdf0e10cSrcweir #************************************************************************/ 516cdf0e10cSrcweir 517cdf0e10cSrcweir void ScFunctionDockWin::SetMyWidthToBo(Size &aNewSize) 518cdf0e10cSrcweir { 519cdf0e10cSrcweir if((sal_uLong)aNewSize.Width()<nMinWidth) aNewSize.Width()=nMinWidth; 520cdf0e10cSrcweir 521cdf0e10cSrcweir Size aCDSize=aCatBox.GetSizePixel(); 522cdf0e10cSrcweir Size aDdFLSize=aDDFuncList.GetSizePixel(); 523cdf0e10cSrcweir Size aFDSize=aFiFuncDesc.GetSizePixel(); 524cdf0e10cSrcweir 525cdf0e10cSrcweir Point aCDTopLeft=aCatBox.GetPosPixel(); 526cdf0e10cSrcweir Point aDdFLTopLeft=aDDFuncList.GetPosPixel(); 527cdf0e10cSrcweir Point aFDTopLeft=aFiFuncDesc.GetPosPixel(); 528cdf0e10cSrcweir 529cdf0e10cSrcweir aCDSize.Width()=aDdFLTopLeft.X()-aFDTopLeft.X()-aCDTopLeft.X(); 530cdf0e10cSrcweir aDdFLTopLeft.X()=aCDSize.Width()+aCDTopLeft.X()+aFDTopLeft.X(); 531cdf0e10cSrcweir 532cdf0e10cSrcweir aDdFLSize.Width()=aNewSize.Width()-aDdFLTopLeft.X()-aFDTopLeft.X(); 533cdf0e10cSrcweir 534cdf0e10cSrcweir aFDSize.Width()=aNewSize.Width()-2*aFDTopLeft.X(); 535cdf0e10cSrcweir 536cdf0e10cSrcweir aDDFuncList.SetPosPixel(aDdFLTopLeft); 537cdf0e10cSrcweir aDDFuncList.SetSizePixel(aDdFLSize); 538cdf0e10cSrcweir aCatBox.SetSizePixel(aCDSize); 539cdf0e10cSrcweir aFiFuncDesc.SetSizePixel(aFDSize); 540cdf0e10cSrcweir } 541cdf0e10cSrcweir 542cdf0e10cSrcweir /************************************************************************* 543cdf0e10cSrcweir #* Member: SetHeight Datum:16.10.97 544cdf0e10cSrcweir #*------------------------------------------------------------------------ 545cdf0e10cSrcweir #* 546cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 547cdf0e10cSrcweir #* 548cdf0e10cSrcweir #* Funktion: Hoehe fuer die einzelnen Controls und 549cdf0e10cSrcweir #* das Fenster einstellen, wenn oben oder 550cdf0e10cSrcweir #* unten angedockt werden soll. 551cdf0e10cSrcweir #* 552cdf0e10cSrcweir #* Input: neue Fenstergroesse 553cdf0e10cSrcweir #* 554cdf0e10cSrcweir #* Output: --- 555cdf0e10cSrcweir #* 556cdf0e10cSrcweir #************************************************************************/ 557cdf0e10cSrcweir 558cdf0e10cSrcweir void ScFunctionDockWin::SetMyHeightToBo(Size &aNewSize) 559cdf0e10cSrcweir { 560cdf0e10cSrcweir if((sal_uLong)aNewSize.Height()<nMinHeight) aNewSize.Height()=nMinHeight; 561cdf0e10cSrcweir 562cdf0e10cSrcweir Size aFDSize=aFiFuncDesc.GetSizePixel(); 563cdf0e10cSrcweir 564cdf0e10cSrcweir Point aFDTopLeft=aFiFuncDesc.GetPosPixel(); 565cdf0e10cSrcweir Point aCBTopLeft=aCatBox.GetPosPixel(); 566cdf0e10cSrcweir aFDSize.Height()=aNewSize.Height()-aFDTopLeft.Y()-aCBTopLeft.Y(); 567cdf0e10cSrcweir aFiFuncDesc.SetSizePixel(aFDSize); 568cdf0e10cSrcweir 569cdf0e10cSrcweir } 570cdf0e10cSrcweir 571cdf0e10cSrcweir /************************************************************************* 572cdf0e10cSrcweir #* Member: SetDescription Datum:13.10.97 573cdf0e10cSrcweir #*------------------------------------------------------------------------ 574cdf0e10cSrcweir #* 575cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 576cdf0e10cSrcweir #* 577cdf0e10cSrcweir #* Funktion: Erklaerungstext fuer die Funktion einstellen. 578cdf0e10cSrcweir #* 579cdf0e10cSrcweir #* Input: --- 580cdf0e10cSrcweir #* 581cdf0e10cSrcweir #* Output: --- 582cdf0e10cSrcweir #* 583cdf0e10cSrcweir #************************************************************************/ 584cdf0e10cSrcweir 585cdf0e10cSrcweir void ScFunctionDockWin::SetDescription() 586cdf0e10cSrcweir { 587cdf0e10cSrcweir aFiFuncDesc.SetText( EMPTY_STRING ); 588cdf0e10cSrcweir const ScFuncDesc* pDesc = 589cdf0e10cSrcweir (const ScFuncDesc*)pAllFuncList->GetEntryData( 590cdf0e10cSrcweir pAllFuncList->GetSelectEntryPos() ); 591cdf0e10cSrcweir if (pDesc) 592cdf0e10cSrcweir { 593cdf0e10cSrcweir pDesc->initArgumentInfo(); // full argument info is needed 594cdf0e10cSrcweir 595cdf0e10cSrcweir String aString=pAllFuncList->GetSelectEntry(); 596cdf0e10cSrcweir if(nDockMode==0) 597cdf0e10cSrcweir { 598cdf0e10cSrcweir aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ":\n\n" )); 599cdf0e10cSrcweir } 600cdf0e10cSrcweir else 601cdf0e10cSrcweir { 602cdf0e10cSrcweir aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( ": " )); 603cdf0e10cSrcweir } 604cdf0e10cSrcweir 605cdf0e10cSrcweir aString+=pDesc->GetParamList(); 606cdf0e10cSrcweir 607cdf0e10cSrcweir if(nDockMode==0) 608cdf0e10cSrcweir { 609cdf0e10cSrcweir aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "\n\n" )); 610cdf0e10cSrcweir } 611cdf0e10cSrcweir else 612cdf0e10cSrcweir { 613cdf0e10cSrcweir aString += '\n'; 614cdf0e10cSrcweir } 615cdf0e10cSrcweir 616cdf0e10cSrcweir aString+=*(pDesc->pFuncDesc); 617cdf0e10cSrcweir 618cdf0e10cSrcweir aFiFuncDesc.SetText(aString); 619cdf0e10cSrcweir aFiFuncDesc.StateChanged(STATE_CHANGE_TEXT); 620cdf0e10cSrcweir aFiFuncDesc.Invalidate(); 621cdf0e10cSrcweir aFiFuncDesc.Update(); 622cdf0e10cSrcweir 623cdf0e10cSrcweir } 624cdf0e10cSrcweir } 625cdf0e10cSrcweir 626cdf0e10cSrcweir /************************************************************************* 627cdf0e10cSrcweir #* Member: Resizing Datum:06.10.97 628cdf0e10cSrcweir #*------------------------------------------------------------------------ 629cdf0e10cSrcweir #* 630cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 631cdf0e10cSrcweir #* 632cdf0e10cSrcweir #* Funktion: Ueberladene Funktion um die Groesse der 633cdf0e10cSrcweir #* einzelnen Controls einzustellen. 634cdf0e10cSrcweir #* 635cdf0e10cSrcweir #* Input: neue Groesse 636cdf0e10cSrcweir #* 637cdf0e10cSrcweir #* Output: --- 638cdf0e10cSrcweir #* 639cdf0e10cSrcweir #************************************************************************/ 640cdf0e10cSrcweir 641cdf0e10cSrcweir void __EXPORT ScFunctionDockWin::Resizing( Size& rNewSize ) 642cdf0e10cSrcweir { 643cdf0e10cSrcweir if((sal_uLong)rNewSize.Width()<nMinWidth) rNewSize.Width()=nMinWidth; 644cdf0e10cSrcweir if((sal_uLong)rNewSize.Height()<nMinHeight) rNewSize.Height()=nMinHeight; 645cdf0e10cSrcweir 646cdf0e10cSrcweir } 647cdf0e10cSrcweir 648cdf0e10cSrcweir /************************************************************************* 649cdf0e10cSrcweir #* Member: Close Datum:07.10.97 650cdf0e10cSrcweir #*------------------------------------------------------------------------ 651cdf0e10cSrcweir #* 652cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 653cdf0e10cSrcweir #* 654cdf0e10cSrcweir #* Funktion: Schliessen des Fensters 655cdf0e10cSrcweir #* 656cdf0e10cSrcweir #* Input: --- 657cdf0e10cSrcweir #* 658cdf0e10cSrcweir #* Output: TRUE 659cdf0e10cSrcweir #* 660cdf0e10cSrcweir #************************************************************************/ 661cdf0e10cSrcweir 662cdf0e10cSrcweir sal_Bool __EXPORT ScFunctionDockWin::Close() 663cdf0e10cSrcweir { 664cdf0e10cSrcweir SfxBoolItem aItem( FID_FUNCTION_BOX, sal_False ); 665cdf0e10cSrcweir 666cdf0e10cSrcweir GetBindings().GetDispatcher()->Execute( FID_FUNCTION_BOX, 667cdf0e10cSrcweir SFX_CALLMODE_ASYNCHRON | SFX_CALLMODE_RECORD, 668cdf0e10cSrcweir &aItem, 0L ); 669cdf0e10cSrcweir 670cdf0e10cSrcweir SfxDockingWindow::Close(); 671cdf0e10cSrcweir 672cdf0e10cSrcweir return( sal_True ); 673cdf0e10cSrcweir } 674cdf0e10cSrcweir 675cdf0e10cSrcweir 676cdf0e10cSrcweir /************************************************************************* 677cdf0e10cSrcweir #* Member: CheckAlignment Datum:16.10.97 678cdf0e10cSrcweir #*------------------------------------------------------------------------ 679cdf0e10cSrcweir #* 680cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 681cdf0e10cSrcweir #* 682cdf0e10cSrcweir #* Funktion: Ueberprueft den Andockmodus und stellt die 683cdf0e10cSrcweir #* Groessen dementsprechend ein. 684cdf0e10cSrcweir #* 685cdf0e10cSrcweir #* Input: Das neue Alignment 686cdf0e10cSrcweir #* 687cdf0e10cSrcweir #* Output: Das uebergebene Alignment 688cdf0e10cSrcweir #* 689cdf0e10cSrcweir #************************************************************************/ 690cdf0e10cSrcweir SfxChildAlignment __EXPORT ScFunctionDockWin::CheckAlignment(SfxChildAlignment /* abla */, 691cdf0e10cSrcweir SfxChildAlignment aChildAlign) 692cdf0e10cSrcweir { 693cdf0e10cSrcweir String aString = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ww")); 694cdf0e10cSrcweir Size aTxtSize( aFiFuncDesc.GetTextWidth(aString), aFiFuncDesc.GetTextHeight() ); 695cdf0e10cSrcweir if(!bInit) 696cdf0e10cSrcweir { 697cdf0e10cSrcweir eSfxOldAlignment=eSfxNewAlignment; 698cdf0e10cSrcweir eSfxNewAlignment=aChildAlign; 699cdf0e10cSrcweir } 700cdf0e10cSrcweir else 701cdf0e10cSrcweir { 702cdf0e10cSrcweir bInit=sal_False; 703cdf0e10cSrcweir eSfxOldAlignment=aChildAlign; 704cdf0e10cSrcweir eSfxNewAlignment=aChildAlign; 705cdf0e10cSrcweir } 706cdf0e10cSrcweir 707cdf0e10cSrcweir switch(eSfxOldAlignment) 708cdf0e10cSrcweir { 709cdf0e10cSrcweir case SFX_ALIGN_HIGHESTTOP: 710cdf0e10cSrcweir case SFX_ALIGN_TOP: 711cdf0e10cSrcweir case SFX_ALIGN_LOWESTTOP: 712cdf0e10cSrcweir case SFX_ALIGN_LOWESTBOTTOM: 713cdf0e10cSrcweir case SFX_ALIGN_BOTTOM: 714cdf0e10cSrcweir case SFX_ALIGN_TOOLBOXTOP: 715cdf0e10cSrcweir case SFX_ALIGN_TOOLBOXBOTTOM: 716cdf0e10cSrcweir 717cdf0e10cSrcweir nMinWidth= 0;/*aDDFuncList.GetPosPixel().X()+ 718cdf0e10cSrcweir 10*aTxtSize.Width()+ 719cdf0e10cSrcweir aFuncList.GetPosPixel().X();*/ 720cdf0e10cSrcweir nMinHeight=0; 721cdf0e10cSrcweir 722cdf0e10cSrcweir break; 723cdf0e10cSrcweir 724cdf0e10cSrcweir case SFX_ALIGN_NOALIGNMENT: 725cdf0e10cSrcweir 726cdf0e10cSrcweir aString = aCatBox.GetEntry(0); 727cdf0e10cSrcweir aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM("www")); 728cdf0e10cSrcweir aTxtSize = Size( aFiFuncDesc.GetTextWidth(aString), 729cdf0e10cSrcweir aFiFuncDesc.GetTextHeight() ); 730cdf0e10cSrcweir 731cdf0e10cSrcweir default: Point aTopLeft=aCatBox.GetPosPixel(); 732cdf0e10cSrcweir nMinWidth=aTxtSize.Width()+aTopLeft.X() 733cdf0e10cSrcweir +2*aFuncList.GetPosPixel().X(); 734cdf0e10cSrcweir nMinHeight=19*aTxtSize.Height(); 735cdf0e10cSrcweir //aCatBox.SelectEntryPos(0); 736cdf0e10cSrcweir 737cdf0e10cSrcweir break; 738cdf0e10cSrcweir } 739cdf0e10cSrcweir 740cdf0e10cSrcweir return aChildAlign; 741cdf0e10cSrcweir } 742cdf0e10cSrcweir /************************************************************************* 743cdf0e10cSrcweir #* Member: Close Datum:07.10.97 744cdf0e10cSrcweir #*------------------------------------------------------------------------ 745cdf0e10cSrcweir #* 746cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 747cdf0e10cSrcweir #* 748cdf0e10cSrcweir #* Funktion: Aenderungen erkennen 749cdf0e10cSrcweir #* 750cdf0e10cSrcweir #* Input: --- 751cdf0e10cSrcweir #* 752cdf0e10cSrcweir #* Output: TRUE 753cdf0e10cSrcweir #* 754cdf0e10cSrcweir #************************************************************************/ 755cdf0e10cSrcweir void ScFunctionDockWin::Notify( SfxBroadcaster&, const SfxHint& /* rHint */ ) 756cdf0e10cSrcweir { 757cdf0e10cSrcweir // const SfxPoolItemHint *pPoolItemHint = PTR_CAST(SfxPoolItemHint, &rHint); 758cdf0e10cSrcweir /* 759cdf0e10cSrcweir if ( pPoolItemHint 760cdf0e10cSrcweir && ( pPoolItemHint->GetObject()->ISA( SvxColorTableItem ) ) ) 761cdf0e10cSrcweir { 762cdf0e10cSrcweir // Die Liste der Farben hat sich geaendert 763cdf0e10cSrcweir pColorTable = ( (SvxColorTableItem*) pPoolItemHint->GetObject() )->GetColorTable(); 764cdf0e10cSrcweir FillValueSet(); 765cdf0e10cSrcweir } 766cdf0e10cSrcweir */ 767cdf0e10cSrcweir } 768cdf0e10cSrcweir 769cdf0e10cSrcweir 770cdf0e10cSrcweir /************************************************************************* 771cdf0e10cSrcweir #* Member: Resize Datum:06.10.97 772cdf0e10cSrcweir #*------------------------------------------------------------------------ 773cdf0e10cSrcweir #* 774cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 775cdf0e10cSrcweir #* 776cdf0e10cSrcweir #* Funktion: Ueberladene Funktion um die Groesse der 777cdf0e10cSrcweir #* einzelnen Controls einzustellen. 778cdf0e10cSrcweir #* 779cdf0e10cSrcweir #* Input: neue Groesse 780cdf0e10cSrcweir #* 781cdf0e10cSrcweir #* Output: --- 782cdf0e10cSrcweir #* 783cdf0e10cSrcweir #************************************************************************/ 784cdf0e10cSrcweir 785cdf0e10cSrcweir void __EXPORT ScFunctionDockWin::Resize() 786cdf0e10cSrcweir { 787cdf0e10cSrcweir if ( !IsFloatingMode() || 788cdf0e10cSrcweir !GetFloatingWindow()->IsRollUp() ) 789cdf0e10cSrcweir { 790cdf0e10cSrcweir Size aQSize=GetOutputSizePixel(); 791cdf0e10cSrcweir Resizing( aQSize); 792cdf0e10cSrcweir SetSize(); 793cdf0e10cSrcweir } 794cdf0e10cSrcweir SfxDockingWindow::Resize(); 795cdf0e10cSrcweir } 796cdf0e10cSrcweir 797cdf0e10cSrcweir /************************************************************************* 798cdf0e10cSrcweir #* Member: UpdateFunctionList Datum:06.10.97 799cdf0e10cSrcweir #*------------------------------------------------------------------------ 800cdf0e10cSrcweir #* 801cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 802cdf0e10cSrcweir #* 803cdf0e10cSrcweir #* Funktion: Aktualisiert die Liste der Funktionen ab- 804cdf0e10cSrcweir #* haengig von der eingestellten Kategorie. 805cdf0e10cSrcweir #* 806cdf0e10cSrcweir #* Input: --- 807cdf0e10cSrcweir #* 808cdf0e10cSrcweir #* Output: --- 809cdf0e10cSrcweir #* 810cdf0e10cSrcweir #************************************************************************/ 811cdf0e10cSrcweir 812cdf0e10cSrcweir void ScFunctionDockWin::UpdateFunctionList() 813cdf0e10cSrcweir { 814cdf0e10cSrcweir sal_uInt16 nSelPos = aCatBox.GetSelectEntryPos(); 815cdf0e10cSrcweir sal_uInt16 nCategory = ( LISTBOX_ENTRY_NOTFOUND != nSelPos ) 816cdf0e10cSrcweir ? (nSelPos-1) : 0; 817cdf0e10cSrcweir 818cdf0e10cSrcweir pAllFuncList->Clear(); 819cdf0e10cSrcweir pAllFuncList->SetUpdateMode( sal_False ); 820cdf0e10cSrcweir 821cdf0e10cSrcweir if ( nSelPos > 0 ) 822cdf0e10cSrcweir { 823cdf0e10cSrcweir ScFunctionMgr* pFuncMgr = ScGlobal::GetStarCalcFunctionMgr(); 824cdf0e10cSrcweir 825cdf0e10cSrcweir const ScFuncDesc* pDesc = pFuncMgr->First( nCategory ); 826cdf0e10cSrcweir while ( pDesc ) 827cdf0e10cSrcweir { 828cdf0e10cSrcweir pAllFuncList->SetEntryData( 829cdf0e10cSrcweir pAllFuncList->InsertEntry( *(pDesc->pFuncName) ), 830cdf0e10cSrcweir (void*)pDesc ); 831cdf0e10cSrcweir pDesc = pFuncMgr->Next(); 832cdf0e10cSrcweir } 833cdf0e10cSrcweir } 834cdf0e10cSrcweir else // LRU-Liste 835cdf0e10cSrcweir { 836cdf0e10cSrcweir for ( sal_uInt16 i=0; i<LRU_MAX && aLRUList[i]; i++ ) 837cdf0e10cSrcweir { 838cdf0e10cSrcweir const ScFuncDesc* pDesc = aLRUList[i]; 839cdf0e10cSrcweir pAllFuncList->SetEntryData( 840cdf0e10cSrcweir pAllFuncList->InsertEntry( *(pDesc->pFuncName) ), 841cdf0e10cSrcweir (void*)pDesc ); 842cdf0e10cSrcweir } 843cdf0e10cSrcweir } 844cdf0e10cSrcweir 845cdf0e10cSrcweir 846cdf0e10cSrcweir //------------------------------------------------------ 847cdf0e10cSrcweir pAllFuncList->SetUpdateMode( sal_True ); 848cdf0e10cSrcweir 849cdf0e10cSrcweir if ( pAllFuncList->GetEntryCount() > 0 ) 850cdf0e10cSrcweir { 851cdf0e10cSrcweir pAllFuncList->Enable(); 852cdf0e10cSrcweir pAllFuncList->SelectEntryPos( 0 ); 853cdf0e10cSrcweir } 854cdf0e10cSrcweir else 855cdf0e10cSrcweir { 856cdf0e10cSrcweir pAllFuncList->Disable(); 857cdf0e10cSrcweir } 858cdf0e10cSrcweir } 859cdf0e10cSrcweir 860cdf0e10cSrcweir /************************************************************************* 861cdf0e10cSrcweir #* Member: DoEnter Datum:06.10.97 862cdf0e10cSrcweir #*------------------------------------------------------------------------ 863cdf0e10cSrcweir #* 864cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 865cdf0e10cSrcweir #* 866cdf0e10cSrcweir #* Funktion: Eingabe ins Dokument uebernehmen. Wird aufgerufen 867cdf0e10cSrcweir #* nach betaetigen der Uebernehmen- Schaltflaeche 868cdf0e10cSrcweir #* oder einem Doppelklick in die Funktionsliste. 869cdf0e10cSrcweir #* 870cdf0e10cSrcweir #* Input: --- 871cdf0e10cSrcweir #* 872cdf0e10cSrcweir #* Output: --- 873cdf0e10cSrcweir #* 874cdf0e10cSrcweir #************************************************************************/ 875cdf0e10cSrcweir 876cdf0e10cSrcweir void ScFunctionDockWin::DoEnter(sal_Bool /* bOk */) //@@ ??? 877cdf0e10cSrcweir { 878cdf0e10cSrcweir String aFirstArgStr; 879cdf0e10cSrcweir String aParaStr; 880cdf0e10cSrcweir String aArgStr; 881cdf0e10cSrcweir String aString=pAllFuncList->GetSelectEntry(); 882cdf0e10cSrcweir SfxViewShell* pCurSh = SfxViewShell::Current(); 883cdf0e10cSrcweir nArgs=0; 884cdf0e10cSrcweir 885cdf0e10cSrcweir if(aString.Len()>0) 886cdf0e10cSrcweir { 887cdf0e10cSrcweir 888cdf0e10cSrcweir ScModule* pScMod = SC_MOD(); 889cdf0e10cSrcweir ScTabViewShell* pViewSh = PTR_CAST( ScTabViewShell, pCurSh); 890cdf0e10cSrcweir ScInputHandler* pHdl = pScMod->GetInputHdl( pViewSh ); 891cdf0e10cSrcweir if(!pScMod->IsEditMode()) 892cdf0e10cSrcweir { 893cdf0e10cSrcweir pScMod->SetInputMode(SC_INPUT_TABLE); 894cdf0e10cSrcweir aString = '='; 895cdf0e10cSrcweir aString += pAllFuncList->GetSelectEntry(); 896cdf0e10cSrcweir if (pHdl) 897cdf0e10cSrcweir pHdl->ClearText(); 898cdf0e10cSrcweir } 899cdf0e10cSrcweir const ScFuncDesc* pDesc = 900cdf0e10cSrcweir (const ScFuncDesc*)pAllFuncList->GetEntryData( 901cdf0e10cSrcweir pAllFuncList->GetSelectEntryPos() ); 902cdf0e10cSrcweir if (pDesc) 903cdf0e10cSrcweir { 904cdf0e10cSrcweir pFuncDesc=pDesc; 905cdf0e10cSrcweir UpdateLRUList(); 906cdf0e10cSrcweir nArgs = pDesc->nArgCount; 907cdf0e10cSrcweir if(nArgs>0) 908cdf0e10cSrcweir { 909cdf0e10cSrcweir // NOTE: Theoretically the first parameter could have the 910cdf0e10cSrcweir // suppress flag as well, but practically it doesn't. 911cdf0e10cSrcweir aFirstArgStr = *(pDesc->ppDefArgNames[0]); 912cdf0e10cSrcweir aFirstArgStr.EraseLeadingAndTrailingChars(); 913cdf0e10cSrcweir aFirstArgStr.SearchAndReplaceAll(' ', '_'); 914cdf0e10cSrcweir aArgStr = aFirstArgStr; 915*1b1b70fbSAndrew Rist if ( nArgs != VAR_ARGS && nArgs != PAIRED_VAR_ARGS ) 916cdf0e10cSrcweir { // no VarArgs or Fix plus VarArgs, but not VarArgs only 917cdf0e10cSrcweir String aArgSep = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM( "; " )); 918*1b1b70fbSAndrew Rist sal_uInt16 nFix; 919*1b1b70fbSAndrew Rist if (nArgs >= PAIRED_VAR_ARGS) 920*1b1b70fbSAndrew Rist nFix = nArgs - PAIRED_VAR_ARGS + 2; 921*1b1b70fbSAndrew Rist else if (nArgs >= VAR_ARGS) 922*1b1b70fbSAndrew Rist nFix = nArgs - VAR_ARGS + 1; 923*1b1b70fbSAndrew Rist else 924*1b1b70fbSAndrew Rist nFix = nArgs; 925cdf0e10cSrcweir for ( sal_uInt16 nArg = 1; 926cdf0e10cSrcweir nArg < nFix && !pDesc->pDefArgFlags[nArg].bOptional; nArg++ ) 927cdf0e10cSrcweir { 928cdf0e10cSrcweir if (!pDesc->pDefArgFlags[nArg].bSuppress) 929cdf0e10cSrcweir { 930cdf0e10cSrcweir aArgStr += aArgSep; 931cdf0e10cSrcweir String sTmp(*(pDesc->ppDefArgNames[nArg])); 932cdf0e10cSrcweir sTmp.EraseLeadingAndTrailingChars(); 933cdf0e10cSrcweir sTmp.SearchAndReplaceAll(' ', '_'); 934cdf0e10cSrcweir aArgStr += sTmp; 935cdf0e10cSrcweir } 936cdf0e10cSrcweir } 937cdf0e10cSrcweir } 938cdf0e10cSrcweir } 939cdf0e10cSrcweir } 940cdf0e10cSrcweir if (pHdl) 941cdf0e10cSrcweir { 942cdf0e10cSrcweir if(pHdl->GetEditString().Len()==0) 943cdf0e10cSrcweir { 944cdf0e10cSrcweir aString = '='; 945cdf0e10cSrcweir aString += pAllFuncList->GetSelectEntry(); 946cdf0e10cSrcweir } 947cdf0e10cSrcweir EditView *pEdView=pHdl->GetActiveView(); 948cdf0e10cSrcweir if(pEdView!=NULL) // @ Wegen Absturz bei Namen festlegen 949cdf0e10cSrcweir { 950cdf0e10cSrcweir if(nArgs>0) 951cdf0e10cSrcweir { 952cdf0e10cSrcweir pHdl->InsertFunction(aString); 953cdf0e10cSrcweir pEdView->InsertText(aArgStr,sal_True); 954cdf0e10cSrcweir ESelection aESel=pEdView->GetSelection(); 955cdf0e10cSrcweir aESel.nEndPos=aESel.nStartPos+aFirstArgStr.Len(); 956cdf0e10cSrcweir pEdView->SetSelection(aESel); 957cdf0e10cSrcweir pHdl->DataChanged(); 958cdf0e10cSrcweir } 959cdf0e10cSrcweir else 960cdf0e10cSrcweir { 961cdf0e10cSrcweir aString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "()" )); 962cdf0e10cSrcweir pEdView->InsertText(aString,sal_False); 963cdf0e10cSrcweir pHdl->DataChanged(); 964cdf0e10cSrcweir } 965cdf0e10cSrcweir } 966cdf0e10cSrcweir } 967cdf0e10cSrcweir InitLRUList(); 968cdf0e10cSrcweir } 969cdf0e10cSrcweir if ( pCurSh ) 970cdf0e10cSrcweir { 971cdf0e10cSrcweir Window* pShellWnd = pCurSh->GetWindow(); 972cdf0e10cSrcweir 973cdf0e10cSrcweir if ( pShellWnd ) 974cdf0e10cSrcweir pShellWnd->GrabFocus(); 975cdf0e10cSrcweir } 976cdf0e10cSrcweir 977cdf0e10cSrcweir 978cdf0e10cSrcweir } 979cdf0e10cSrcweir 980cdf0e10cSrcweir 981cdf0e10cSrcweir 982cdf0e10cSrcweir /************************************************************************* 983cdf0e10cSrcweir #* Handle: SelHdl Datum:06.10.97 984cdf0e10cSrcweir #*------------------------------------------------------------------------ 985cdf0e10cSrcweir #* 986cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 987cdf0e10cSrcweir #* 988cdf0e10cSrcweir #* Funktion: Bei einer Aenderung der Kategorie wird die 989cdf0e10cSrcweir #* die Liste der Funktionen aktualisiert. 990cdf0e10cSrcweir #* 991cdf0e10cSrcweir #* Input: --- 992cdf0e10cSrcweir #* 993cdf0e10cSrcweir #* Output: --- 994cdf0e10cSrcweir #* 995cdf0e10cSrcweir #************************************************************************/ 996cdf0e10cSrcweir 997cdf0e10cSrcweir IMPL_LINK( ScFunctionDockWin, SelHdl, ListBox*, pLb ) 998cdf0e10cSrcweir { 999cdf0e10cSrcweir if ( pLb == &aCatBox) 1000cdf0e10cSrcweir { 1001cdf0e10cSrcweir UpdateFunctionList(); 1002cdf0e10cSrcweir SetDescription(); 1003cdf0e10cSrcweir } 1004cdf0e10cSrcweir 1005cdf0e10cSrcweir if ( pLb == &aFuncList||pLb == &aDDFuncList) 1006cdf0e10cSrcweir { 1007cdf0e10cSrcweir SetDescription(); 1008cdf0e10cSrcweir } 1009cdf0e10cSrcweir 1010cdf0e10cSrcweir 1011cdf0e10cSrcweir //SetSize(); 1012cdf0e10cSrcweir return 0; 1013cdf0e10cSrcweir } 1014cdf0e10cSrcweir 1015cdf0e10cSrcweir /************************************************************************* 1016cdf0e10cSrcweir #* Handle: SelHdl Datum:06.10.97 1017cdf0e10cSrcweir #*------------------------------------------------------------------------ 1018cdf0e10cSrcweir #* 1019cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 1020cdf0e10cSrcweir #* 1021cdf0e10cSrcweir #* Funktion: Bei einer Aenderung der Kategorie wird die 1022cdf0e10cSrcweir #* die Liste der Funktionen aktualisiert. 1023cdf0e10cSrcweir #* 1024cdf0e10cSrcweir #* Input: --- 1025cdf0e10cSrcweir #* 1026cdf0e10cSrcweir #* Output: --- 1027cdf0e10cSrcweir #* 1028cdf0e10cSrcweir #************************************************************************/ 1029cdf0e10cSrcweir 1030cdf0e10cSrcweir IMPL_LINK( ScFunctionDockWin, SetSelectionHdl, void*, pCtrl ) 1031cdf0e10cSrcweir { 1032cdf0e10cSrcweir if ((ImageButton *)pCtrl == &aInsertButton || 1033cdf0e10cSrcweir (ListBox *)pCtrl == &aFuncList) 1034cdf0e10cSrcweir { 1035cdf0e10cSrcweir DoEnter(sal_True); // Uebernimmt die Eingabe 1036cdf0e10cSrcweir } 1037cdf0e10cSrcweir //... 1038cdf0e10cSrcweir 1039cdf0e10cSrcweir return 0; 1040cdf0e10cSrcweir } 1041cdf0e10cSrcweir 1042cdf0e10cSrcweir /************************************************************************* 1043cdf0e10cSrcweir #* Handle: SetSplitHdl Datum:13.10.97 1044cdf0e10cSrcweir #*------------------------------------------------------------------------ 1045cdf0e10cSrcweir #* 1046cdf0e10cSrcweir #* Klasse: ScFunctionDockWin 1047cdf0e10cSrcweir #* 1048cdf0e10cSrcweir #* Funktion: Bei einer Aenderung des Split- Controls werden die 1049cdf0e10cSrcweir #* einzelnen Controls an die neue Groesse angepasst. 1050cdf0e10cSrcweir #* 1051cdf0e10cSrcweir #* Input: Zeiger auf Control 1052cdf0e10cSrcweir #* 1053cdf0e10cSrcweir #* Output: --- 1054cdf0e10cSrcweir #* 1055cdf0e10cSrcweir #************************************************************************/ 1056cdf0e10cSrcweir 1057cdf0e10cSrcweir IMPL_LINK( ScFunctionDockWin, SetSplitHdl, ScPrivatSplit*, pCtrl ) 1058cdf0e10cSrcweir { 1059cdf0e10cSrcweir if (pCtrl == &aPrivatSplit) 1060cdf0e10cSrcweir { 1061cdf0e10cSrcweir short nDeltaY=aPrivatSplit.GetDeltaY(); 1062cdf0e10cSrcweir Size aFLSize=aFuncList.GetSizePixel(); 1063cdf0e10cSrcweir Size aFDSize=aFiFuncDesc.GetSizePixel(); 1064cdf0e10cSrcweir Point aFDTopLeft=aFiFuncDesc.GetPosPixel(); 1065cdf0e10cSrcweir 1066cdf0e10cSrcweir aFLSize.Height()+=nDeltaY; 1067cdf0e10cSrcweir aFDSize.Height()-=nDeltaY; 1068cdf0e10cSrcweir aFDTopLeft.Y()+=nDeltaY; 1069cdf0e10cSrcweir aFuncList.SetSizePixel(aFLSize); 1070cdf0e10cSrcweir aFiFuncDesc.SetPosPixel(aFDTopLeft); 1071cdf0e10cSrcweir aFiFuncDesc.SetSizePixel(aFDSize); 1072cdf0e10cSrcweir /* 1073cdf0e10cSrcweir aFuncList.Invalidate(); 1074cdf0e10cSrcweir aFuncList.Update(); 1075cdf0e10cSrcweir aFiFuncDesc.Invalidate(); 1076cdf0e10cSrcweir aFiFuncDesc.Update(); 1077cdf0e10cSrcweir */ 1078cdf0e10cSrcweir } 1079cdf0e10cSrcweir //... 1080cdf0e10cSrcweir 1081cdf0e10cSrcweir return 0; 1082cdf0e10cSrcweir } 1083cdf0e10cSrcweir 1084cdf0e10cSrcweir void ScFunctionDockWin::ToggleFloatingMode() 1085cdf0e10cSrcweir { 1086cdf0e10cSrcweir aSplitterInitPos = Point(); 1087cdf0e10cSrcweir SfxDockingWindow::ToggleFloatingMode(); 1088cdf0e10cSrcweir 1089cdf0e10cSrcweir eSfxNewAlignment=GetAlignment(); 1090cdf0e10cSrcweir eSfxOldAlignment=eSfxNewAlignment; 1091cdf0e10cSrcweir 1092cdf0e10cSrcweir aOldSize.Height()=0; 1093cdf0e10cSrcweir aOldSize.Width()=0; 1094cdf0e10cSrcweir aTimer.Start(); 1095cdf0e10cSrcweir } 1096cdf0e10cSrcweir 1097cdf0e10cSrcweir IMPL_LINK( ScFunctionDockWin, TimerHdl, Timer*, EMPTYARG ) 1098cdf0e10cSrcweir { 1099cdf0e10cSrcweir CheckAlignment(eSfxOldAlignment,eSfxNewAlignment); 1100cdf0e10cSrcweir SetSize(); 1101cdf0e10cSrcweir return 0; 1102cdf0e10cSrcweir } 1103cdf0e10cSrcweir 1104cdf0e10cSrcweir void ScFunctionDockWin::Initialize(SfxChildWinInfo *pInfo) 1105cdf0e10cSrcweir { 1106cdf0e10cSrcweir String aStr; 1107cdf0e10cSrcweir if(pInfo!=NULL) 1108cdf0e10cSrcweir { 1109cdf0e10cSrcweir if ( pInfo->aExtraString.Len() ) 1110cdf0e10cSrcweir { 1111cdf0e10cSrcweir xub_StrLen nPos = pInfo->aExtraString.Search( 1112cdf0e10cSrcweir String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("ScFuncList:"))); 1113cdf0e10cSrcweir 1114cdf0e10cSrcweir // Versuche, den Alignment-String "ALIGN:(...)" einzulesen; wenn 1115cdf0e10cSrcweir // er nicht vorhanden ist, liegt eine "altere Version vor 1116cdf0e10cSrcweir if ( nPos != STRING_NOTFOUND ) 1117cdf0e10cSrcweir { 1118cdf0e10cSrcweir xub_StrLen n1 = pInfo->aExtraString.Search('(', nPos); 1119cdf0e10cSrcweir if ( n1 != STRING_NOTFOUND ) 1120cdf0e10cSrcweir { 1121cdf0e10cSrcweir xub_StrLen n2 = pInfo->aExtraString.Search(')', n1); 1122cdf0e10cSrcweir if ( n2 != STRING_NOTFOUND ) 1123cdf0e10cSrcweir { 1124cdf0e10cSrcweir // Alignment-String herausschneiden 1125cdf0e10cSrcweir aStr = pInfo->aExtraString.Copy(nPos, n2 - nPos + 1); 1126cdf0e10cSrcweir pInfo->aExtraString.Erase(nPos, n2 - nPos + 1); 1127cdf0e10cSrcweir aStr.Erase(0, n1-nPos+1); 1128cdf0e10cSrcweir } 1129cdf0e10cSrcweir } 1130cdf0e10cSrcweir } 1131cdf0e10cSrcweir } 1132cdf0e10cSrcweir } 1133cdf0e10cSrcweir SfxDockingWindow::Initialize(pInfo); 1134cdf0e10cSrcweir 1135cdf0e10cSrcweir if ( aStr.Len()) 1136cdf0e10cSrcweir { 1137cdf0e10cSrcweir aSplitterInitPos=aPrivatSplit.GetPosPixel(); 1138cdf0e10cSrcweir aSplitterInitPos.Y()=(sal_uInt16) aStr.ToInt32(); 1139cdf0e10cSrcweir xub_StrLen n1 = aStr.Search(';'); 1140cdf0e10cSrcweir aStr.Erase(0, n1+1); 1141cdf0e10cSrcweir sal_uInt16 nSelPos=sal::static_int_cast<sal_uInt16>( aStr.ToInt32() ); 1142cdf0e10cSrcweir aCatBox.SelectEntryPos(nSelPos); 1143cdf0e10cSrcweir SelHdl(&aCatBox); 1144cdf0e10cSrcweir 1145cdf0e10cSrcweir // if the window has already been shown (from SfxDockingWindow::Initialize if docked), 1146cdf0e10cSrcweir // set the splitter position now, otherwise it is set in StateChanged with type INITSHOW 1147cdf0e10cSrcweir 1148cdf0e10cSrcweir UseSplitterInitPos(); 1149cdf0e10cSrcweir } 1150cdf0e10cSrcweir } 1151cdf0e10cSrcweir 1152cdf0e10cSrcweir //------------------------------------------------------------------------- 1153cdf0e10cSrcweir 1154cdf0e10cSrcweir void ScFunctionDockWin::FillInfo(SfxChildWinInfo& rInfo) const 1155cdf0e10cSrcweir { 1156cdf0e10cSrcweir SfxDockingWindow::FillInfo(rInfo); 1157cdf0e10cSrcweir Point aPoint=aPrivatSplit.GetPosPixel(); 1158cdf0e10cSrcweir rInfo.aExtraString.AppendAscii(RTL_CONSTASCII_STRINGPARAM( "ScFuncList:(" )); 1159cdf0e10cSrcweir rInfo.aExtraString += String::CreateFromInt32(aPoint.Y()); 1160cdf0e10cSrcweir rInfo.aExtraString += ';'; 1161cdf0e10cSrcweir rInfo.aExtraString += String::CreateFromInt32(aCatBox.GetSelectEntryPos()); 1162cdf0e10cSrcweir rInfo.aExtraString += ')'; 1163cdf0e10cSrcweir } 1164cdf0e10cSrcweir 1165cdf0e10cSrcweir void ScFunctionDockWin::UseSplitterInitPos() 1166cdf0e10cSrcweir { 1167cdf0e10cSrcweir if ( IsVisible() && aPrivatSplit.IsEnabled() && aSplitterInitPos != Point() ) 1168cdf0e10cSrcweir { 1169cdf0e10cSrcweir aPrivatSplit.MoveSplitTo(aSplitterInitPos); 1170cdf0e10cSrcweir aSplitterInitPos = Point(); // use only once 1171cdf0e10cSrcweir } 1172cdf0e10cSrcweir } 1173cdf0e10cSrcweir 1174cdf0e10cSrcweir void ScFunctionDockWin::StateChanged( StateChangedType nStateChange ) 1175cdf0e10cSrcweir { 1176cdf0e10cSrcweir SfxDockingWindow::StateChanged( nStateChange ); 1177cdf0e10cSrcweir 1178cdf0e10cSrcweir if (nStateChange == STATE_CHANGE_INITSHOW) 1179cdf0e10cSrcweir { 1180cdf0e10cSrcweir UseSplitterInitPos(); // set initial splitter position if necessary 1181cdf0e10cSrcweir } 1182cdf0e10cSrcweir } 1183cdf0e10cSrcweir 1184cdf0e10cSrcweir 1185