1*c25918c1SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*c25918c1SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*c25918c1SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*c25918c1SAndrew Rist * distributed with this work for additional information 6*c25918c1SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*c25918c1SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*c25918c1SAndrew Rist * "License"); you may not use this file except in compliance 9*c25918c1SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*c25918c1SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*c25918c1SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*c25918c1SAndrew Rist * software distributed under the License is distributed on an 15*c25918c1SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*c25918c1SAndrew Rist * KIND, either express or implied. See the License for the 17*c25918c1SAndrew Rist * specific language governing permissions and limitations 18*c25918c1SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*c25918c1SAndrew Rist *************************************************************/ 21*c25918c1SAndrew Rist 22*c25918c1SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_formula.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir //---------------------------------------------------------------------------- 28cdf0e10cSrcweir #include <vcl/sound.hxx> 29cdf0e10cSrcweir #include <vcl/svapp.hxx> 30cdf0e10cSrcweir #include <vcl/scrbar.hxx> 31cdf0e10cSrcweir 32cdf0e10cSrcweir #include "formula/funcutl.hxx" 33cdf0e10cSrcweir #include "formula/IControlReferenceHandler.hxx" 34cdf0e10cSrcweir #include "ControlHelper.hxx" 35cdf0e10cSrcweir #include "ModuleHelper.hxx" 36cdf0e10cSrcweir #include "ForResId.hrc" 37cdf0e10cSrcweir 38cdf0e10cSrcweir 39cdf0e10cSrcweir namespace formula 40cdf0e10cSrcweir { 41cdf0e10cSrcweir //============================================================================ 42cdf0e10cSrcweir // class ValWnd 43cdf0e10cSrcweir //---------------------------------------------------------------------------- 44cdf0e10cSrcweir 45cdf0e10cSrcweir ValWnd::ValWnd( Window* pParent, const ResId& rId ) : Window( pParent, rId ) 46cdf0e10cSrcweir { 47cdf0e10cSrcweir Font aFnt( GetFont() ); 48cdf0e10cSrcweir aFnt.SetTransparent( sal_True ); 49cdf0e10cSrcweir aFnt.SetWeight( WEIGHT_LIGHT ); 50cdf0e10cSrcweir if ( pParent->IsBackground() ) 51cdf0e10cSrcweir { 52cdf0e10cSrcweir Wallpaper aBack = pParent->GetBackground(); 53cdf0e10cSrcweir SetFillColor( aBack.GetColor() ); 54cdf0e10cSrcweir SetBackground( aBack ); 55cdf0e10cSrcweir aFnt.SetFillColor( aBack.GetColor() ); 56cdf0e10cSrcweir } 57cdf0e10cSrcweir else 58cdf0e10cSrcweir { 59cdf0e10cSrcweir SetFillColor(); 60cdf0e10cSrcweir SetBackground(); 61cdf0e10cSrcweir } 62cdf0e10cSrcweir SetFont( aFnt ); 63cdf0e10cSrcweir SetLineColor(); 64cdf0e10cSrcweir 65cdf0e10cSrcweir Size aSzWnd = GetOutputSizePixel(); 66cdf0e10cSrcweir long nHeight = GetTextHeight(); 67cdf0e10cSrcweir long nDiff = aSzWnd.Height()-nHeight; 68cdf0e10cSrcweir 69cdf0e10cSrcweir aRectOut = Rectangle( Point( 1, ( nDiff<2 ) ? 1 : nDiff/2), 70cdf0e10cSrcweir Size ( aSzWnd.Width()-2, nHeight ) ); 71cdf0e10cSrcweir SetClipRegion( Region( aRectOut ) ); 72cdf0e10cSrcweir } 73cdf0e10cSrcweir 74cdf0e10cSrcweir //---------------------------------------------------------------------------- 75cdf0e10cSrcweir 76cdf0e10cSrcweir void __EXPORT ValWnd::Paint( const Rectangle& ) 77cdf0e10cSrcweir { 78cdf0e10cSrcweir DrawText( aRectOut.TopLeft(), aStrValue ); 79cdf0e10cSrcweir } 80cdf0e10cSrcweir 81cdf0e10cSrcweir //---------------------------------------------------------------------------- 82cdf0e10cSrcweir 83cdf0e10cSrcweir void ValWnd::SetValue( const String& rStrVal ) 84cdf0e10cSrcweir { 85cdf0e10cSrcweir if ( aStrValue != rStrVal ) 86cdf0e10cSrcweir { 87cdf0e10cSrcweir aStrValue = rStrVal; 88cdf0e10cSrcweir DrawRect( aRectOut ); // alten Text loeschen 89cdf0e10cSrcweir Paint( aRectOut ); // und neu malen 90cdf0e10cSrcweir } 91cdf0e10cSrcweir } 92cdf0e10cSrcweir 93cdf0e10cSrcweir //============================================================================ 94cdf0e10cSrcweir // class ArgEdit 95cdf0e10cSrcweir //---------------------------------------------------------------------------- 96cdf0e10cSrcweir 97cdf0e10cSrcweir ArgEdit::ArgEdit( Window* pParent, const ResId& rResId ) 98cdf0e10cSrcweir : RefEdit( pParent, rResId ), 99cdf0e10cSrcweir pEdPrev ( NULL ), 100cdf0e10cSrcweir pEdNext ( NULL ), 101cdf0e10cSrcweir pSlider ( NULL ), 102cdf0e10cSrcweir nArgs ( 0 ) 103cdf0e10cSrcweir { 104cdf0e10cSrcweir } 105cdf0e10cSrcweir 106cdf0e10cSrcweir //---------------------------------------------------------------------------- 107cdf0e10cSrcweir 108cdf0e10cSrcweir void ArgEdit::Init( ArgEdit* pPrevEdit, ArgEdit* pNextEdit, 109cdf0e10cSrcweir ScrollBar& rArgSlider, sal_uInt16 nArgCount ) 110cdf0e10cSrcweir { 111cdf0e10cSrcweir pEdPrev = pPrevEdit; 112cdf0e10cSrcweir pEdNext = pNextEdit; 113cdf0e10cSrcweir pSlider = &rArgSlider; 114cdf0e10cSrcweir nArgs = nArgCount; 115cdf0e10cSrcweir } 116cdf0e10cSrcweir 117cdf0e10cSrcweir //---------------------------------------------------------------------------- 118cdf0e10cSrcweir 119cdf0e10cSrcweir // Cursorsteuerung fuer EditFelder im Argument-Dialog 120cdf0e10cSrcweir 121cdf0e10cSrcweir void __EXPORT ArgEdit::KeyInput( const KeyEvent& rKEvt ) 122cdf0e10cSrcweir { 123cdf0e10cSrcweir KeyCode aCode = rKEvt.GetKeyCode(); 124cdf0e10cSrcweir sal_Bool bUp = (aCode.GetCode() == KEY_UP); 125cdf0e10cSrcweir sal_Bool bDown = (aCode.GetCode() == KEY_DOWN); 126cdf0e10cSrcweir ArgEdit* pEd = NULL; 127cdf0e10cSrcweir 128cdf0e10cSrcweir if ( pSlider 129cdf0e10cSrcweir && ( !aCode.IsShift() && !aCode.IsMod1() && !aCode.IsMod2() ) 130cdf0e10cSrcweir && ( bUp || bDown ) ) 131cdf0e10cSrcweir { 132cdf0e10cSrcweir if ( nArgs > 1 ) 133cdf0e10cSrcweir { 134cdf0e10cSrcweir long nThumb = pSlider->GetThumbPos(); 135cdf0e10cSrcweir sal_Bool bDoScroll = sal_False; 136cdf0e10cSrcweir sal_Bool bChangeFocus = sal_False; 137cdf0e10cSrcweir 138cdf0e10cSrcweir if ( bDown ) 139cdf0e10cSrcweir { 140cdf0e10cSrcweir if ( nArgs > 4 ) 141cdf0e10cSrcweir { 142cdf0e10cSrcweir if ( !pEdNext ) 143cdf0e10cSrcweir { 144cdf0e10cSrcweir nThumb++; 145cdf0e10cSrcweir bDoScroll = ( nThumb+3 < (long)nArgs ); 146cdf0e10cSrcweir } 147cdf0e10cSrcweir else 148cdf0e10cSrcweir { 149cdf0e10cSrcweir pEd = pEdNext; 150cdf0e10cSrcweir bChangeFocus = sal_True; 151cdf0e10cSrcweir } 152cdf0e10cSrcweir } 153cdf0e10cSrcweir else if ( pEdNext ) 154cdf0e10cSrcweir { 155cdf0e10cSrcweir pEd = pEdNext; 156cdf0e10cSrcweir bChangeFocus = sal_True; 157cdf0e10cSrcweir } 158cdf0e10cSrcweir } 159cdf0e10cSrcweir else // if ( bUp ) 160cdf0e10cSrcweir { 161cdf0e10cSrcweir if ( nArgs > 4 ) 162cdf0e10cSrcweir { 163cdf0e10cSrcweir if ( !pEdPrev ) 164cdf0e10cSrcweir { 165cdf0e10cSrcweir nThumb--; 166cdf0e10cSrcweir bDoScroll = ( nThumb >= 0 ); 167cdf0e10cSrcweir } 168cdf0e10cSrcweir else 169cdf0e10cSrcweir { 170cdf0e10cSrcweir pEd = pEdPrev; 171cdf0e10cSrcweir bChangeFocus = sal_True; 172cdf0e10cSrcweir } 173cdf0e10cSrcweir } 174cdf0e10cSrcweir else if ( pEdPrev ) 175cdf0e10cSrcweir { 176cdf0e10cSrcweir pEd = pEdPrev; 177cdf0e10cSrcweir bChangeFocus = sal_True; 178cdf0e10cSrcweir } 179cdf0e10cSrcweir } 180cdf0e10cSrcweir 181cdf0e10cSrcweir if ( bDoScroll ) 182cdf0e10cSrcweir { 183cdf0e10cSrcweir pSlider->SetThumbPos( nThumb ); 184cdf0e10cSrcweir ((Link&)pSlider->GetEndScrollHdl()).Call( pSlider ); 185cdf0e10cSrcweir } 186cdf0e10cSrcweir else if ( bChangeFocus ) 187cdf0e10cSrcweir { 188cdf0e10cSrcweir pEd->GrabFocus(); 189cdf0e10cSrcweir } 190cdf0e10cSrcweir else 191cdf0e10cSrcweir Sound::Beep(); 192cdf0e10cSrcweir } 193cdf0e10cSrcweir else 194cdf0e10cSrcweir Sound::Beep(); 195cdf0e10cSrcweir } 196cdf0e10cSrcweir else 197cdf0e10cSrcweir RefEdit::KeyInput( rKEvt ); 198cdf0e10cSrcweir } 199cdf0e10cSrcweir 200cdf0e10cSrcweir 201cdf0e10cSrcweir 202cdf0e10cSrcweir 203cdf0e10cSrcweir /************************************************************************* 204cdf0e10cSrcweir #* Member: ArgInput Datum:13.01.97 205cdf0e10cSrcweir #*------------------------------------------------------------------------ 206cdf0e10cSrcweir #* 207cdf0e10cSrcweir #* Klasse: ArgInput 208cdf0e10cSrcweir #* 209cdf0e10cSrcweir #* Funktion: Konstruktor der Klasse ArgInput 210cdf0e10cSrcweir #* 211cdf0e10cSrcweir #* Input: --- 212cdf0e10cSrcweir #* 213cdf0e10cSrcweir #* Output: --- 214cdf0e10cSrcweir #* 215cdf0e10cSrcweir #************************************************************************/ 216cdf0e10cSrcweir 217cdf0e10cSrcweir ArgInput::ArgInput() 218cdf0e10cSrcweir { 219cdf0e10cSrcweir pFtArg=NULL; 220cdf0e10cSrcweir pBtnFx=NULL; 221cdf0e10cSrcweir pEdArg=NULL; 222cdf0e10cSrcweir pRefBtn=NULL; 223cdf0e10cSrcweir } 224cdf0e10cSrcweir 225cdf0e10cSrcweir /************************************************************************* 226cdf0e10cSrcweir #* Member: InitArgInput Datum:13.01.97 227cdf0e10cSrcweir #*------------------------------------------------------------------------ 228cdf0e10cSrcweir #* 229cdf0e10cSrcweir #* Klasse: ArgInput 230cdf0e10cSrcweir #* 231cdf0e10cSrcweir #* Funktion: Initialisiert die Pointer der Klasse 232cdf0e10cSrcweir #* 233cdf0e10cSrcweir #* Input: --- 234cdf0e10cSrcweir #* 235cdf0e10cSrcweir #* Output: --- 236cdf0e10cSrcweir #* 237cdf0e10cSrcweir #************************************************************************/ 238cdf0e10cSrcweir 239cdf0e10cSrcweir void ArgInput::InitArgInput(FixedText* pftArg, 240cdf0e10cSrcweir ImageButton* pbtnFx, 241cdf0e10cSrcweir ArgEdit* pedArg, 242cdf0e10cSrcweir RefButton* prefBtn) 243cdf0e10cSrcweir { 244cdf0e10cSrcweir pFtArg =pftArg; 245cdf0e10cSrcweir pBtnFx =pbtnFx; 246cdf0e10cSrcweir pEdArg =pedArg; 247cdf0e10cSrcweir pRefBtn=prefBtn; 248cdf0e10cSrcweir 249cdf0e10cSrcweir if(pBtnFx!=NULL) 250cdf0e10cSrcweir { 251cdf0e10cSrcweir pBtnFx->SetClickHdl ( LINK( this, ArgInput, FxBtnClickHdl ) ); 252cdf0e10cSrcweir pBtnFx->SetGetFocusHdl( LINK( this, ArgInput, FxBtnFocusHdl ) ); 253cdf0e10cSrcweir } 254cdf0e10cSrcweir if(pRefBtn!=NULL) 255cdf0e10cSrcweir { 256cdf0e10cSrcweir pRefBtn->SetClickHdl ( LINK( this, ArgInput, RefBtnClickHdl ) ); 257cdf0e10cSrcweir pRefBtn->SetGetFocusHdl( LINK( this, ArgInput, RefBtnFocusHdl ) ); 258cdf0e10cSrcweir } 259cdf0e10cSrcweir if(pEdArg!=NULL) 260cdf0e10cSrcweir { 261cdf0e10cSrcweir pEdArg->SetGetFocusHdl ( LINK( this, ArgInput, EdFocusHdl ) ); 262cdf0e10cSrcweir pEdArg->SetModifyHdl ( LINK( this, ArgInput, EdModifyHdl ) ); 263cdf0e10cSrcweir } 264cdf0e10cSrcweir 265cdf0e10cSrcweir } 266cdf0e10cSrcweir 267cdf0e10cSrcweir /************************************************************************* 268cdf0e10cSrcweir #* Member: SetArgName Datum:13.01.97 269cdf0e10cSrcweir #*------------------------------------------------------------------------ 270cdf0e10cSrcweir #* 271cdf0e10cSrcweir #* Klasse: ArgInput 272cdf0e10cSrcweir #* 273cdf0e10cSrcweir #* Funktion: Setzt den Namen fuer das Argument 274cdf0e10cSrcweir #* 275cdf0e10cSrcweir #* Input: String 276cdf0e10cSrcweir #* 277cdf0e10cSrcweir #* Output: --- 278cdf0e10cSrcweir #* 279cdf0e10cSrcweir #************************************************************************/ 280cdf0e10cSrcweir void ArgInput::SetArgName(const String &aArg) 281cdf0e10cSrcweir { 282cdf0e10cSrcweir if(pFtArg !=NULL) pFtArg->SetText(aArg ); 283cdf0e10cSrcweir } 284cdf0e10cSrcweir 285cdf0e10cSrcweir /************************************************************************* 286cdf0e10cSrcweir #* Member: GetArgName Datum:06.02.97 287cdf0e10cSrcweir #*------------------------------------------------------------------------ 288cdf0e10cSrcweir #* 289cdf0e10cSrcweir #* Klasse: ArgInput 290cdf0e10cSrcweir #* 291cdf0e10cSrcweir #* Funktion: Liefert den Namen fuer das Argument zurueck 292cdf0e10cSrcweir #* 293cdf0e10cSrcweir #* Input: String 294cdf0e10cSrcweir #* 295cdf0e10cSrcweir #* Output: --- 296cdf0e10cSrcweir #* 297cdf0e10cSrcweir #************************************************************************/ 298cdf0e10cSrcweir String ArgInput::GetArgName() 299cdf0e10cSrcweir { 300cdf0e10cSrcweir String aPrivArgName; 301cdf0e10cSrcweir if(pFtArg !=NULL) 302cdf0e10cSrcweir aPrivArgName=pFtArg->GetText(); 303cdf0e10cSrcweir 304cdf0e10cSrcweir return aPrivArgName; 305cdf0e10cSrcweir } 306cdf0e10cSrcweir 307cdf0e10cSrcweir 308cdf0e10cSrcweir /************************************************************************* 309cdf0e10cSrcweir #* Member: SetArgName Datum:13.01.97 310cdf0e10cSrcweir #*------------------------------------------------------------------------ 311cdf0e10cSrcweir #* 312cdf0e10cSrcweir #* Klasse: ArgInput 313cdf0e10cSrcweir #* 314cdf0e10cSrcweir #* Funktion: Setzt den Namen fuer das Argument 315cdf0e10cSrcweir #* 316cdf0e10cSrcweir #* Input: String 317cdf0e10cSrcweir #* 318cdf0e10cSrcweir #* Output: --- 319cdf0e10cSrcweir #* 320cdf0e10cSrcweir #************************************************************************/ 321cdf0e10cSrcweir void ArgInput::SetArgNameFont (const Font &aFont) 322cdf0e10cSrcweir { 323cdf0e10cSrcweir if(pFtArg !=NULL) pFtArg->SetFont(aFont); 324cdf0e10cSrcweir } 325cdf0e10cSrcweir 326cdf0e10cSrcweir /************************************************************************* 327cdf0e10cSrcweir #* Member: SetArgSelection Datum:13.01.97 328cdf0e10cSrcweir #*------------------------------------------------------------------------ 329cdf0e10cSrcweir #* 330cdf0e10cSrcweir #* Klasse: ArgInput 331cdf0e10cSrcweir #* 332cdf0e10cSrcweir #* Funktion: Stellt die Selection fuer die EditBox ein. 333cdf0e10cSrcweir #* 334cdf0e10cSrcweir #* Input: String 335cdf0e10cSrcweir #* 336cdf0e10cSrcweir #* Output: --- 337cdf0e10cSrcweir #* 338cdf0e10cSrcweir #************************************************************************/ 339cdf0e10cSrcweir void ArgInput::SetArgSelection (const Selection& rSel ) 340cdf0e10cSrcweir { 341cdf0e10cSrcweir if(pEdArg !=NULL) pEdArg ->SetSelection(rSel ); 342cdf0e10cSrcweir } 343cdf0e10cSrcweir 344cdf0e10cSrcweir /************************************************************************* 345cdf0e10cSrcweir #* Member: SetArgSelection Datum:13.01.97 346cdf0e10cSrcweir #*------------------------------------------------------------------------ 347cdf0e10cSrcweir #* 348cdf0e10cSrcweir #* Klasse: ArgInput 349cdf0e10cSrcweir #* 350cdf0e10cSrcweir #* Funktion: Liefert die Selection fuer die EditBox zurueck. 351cdf0e10cSrcweir #* 352cdf0e10cSrcweir #* Input: String 353cdf0e10cSrcweir #* 354cdf0e10cSrcweir #* Output: --- 355cdf0e10cSrcweir #* 356cdf0e10cSrcweir #************************************************************************/ 357cdf0e10cSrcweir Selection ArgInput::GetArgSelection () 358cdf0e10cSrcweir { 359cdf0e10cSrcweir Selection aSel; 360cdf0e10cSrcweir if(pEdArg !=NULL) aSel=pEdArg ->GetSelection(); 361cdf0e10cSrcweir return aSel; 362cdf0e10cSrcweir } 363cdf0e10cSrcweir 364cdf0e10cSrcweir /************************************************************************* 365cdf0e10cSrcweir #* Member: SetArgSelection Datum:13.01.97 366cdf0e10cSrcweir #*------------------------------------------------------------------------ 367cdf0e10cSrcweir #* 368cdf0e10cSrcweir #* Klasse: ArgInput 369cdf0e10cSrcweir #* 370cdf0e10cSrcweir #* Funktion: Ersetzt die Selection in der EditBox. 371cdf0e10cSrcweir #* 372cdf0e10cSrcweir #* Input: String 373cdf0e10cSrcweir #* 374cdf0e10cSrcweir #* Output: --- 375cdf0e10cSrcweir #* 376cdf0e10cSrcweir #************************************************************************/ 377cdf0e10cSrcweir void ArgInput::ReplaceSelOfArg(const String& rStr ) 378cdf0e10cSrcweir { 379cdf0e10cSrcweir if(pEdArg !=NULL) pEdArg ->ReplaceSelected(rStr ); 380cdf0e10cSrcweir } 381cdf0e10cSrcweir 382cdf0e10cSrcweir 383cdf0e10cSrcweir 384cdf0e10cSrcweir /************************************************************************* 385cdf0e10cSrcweir #* Member: SetArgVal Datum:13.01.97 386cdf0e10cSrcweir #*------------------------------------------------------------------------ 387cdf0e10cSrcweir #* 388cdf0e10cSrcweir #* Klasse: ArgInput 389cdf0e10cSrcweir #* 390cdf0e10cSrcweir #* Funktion: Setzt den Wert fuer das Argument 391cdf0e10cSrcweir #* 392cdf0e10cSrcweir #* Input: String 393cdf0e10cSrcweir #* 394cdf0e10cSrcweir #* Output: --- 395cdf0e10cSrcweir #* 396cdf0e10cSrcweir #************************************************************************/ 397cdf0e10cSrcweir void ArgInput::SetArgVal(const String &aVal) 398cdf0e10cSrcweir { 399cdf0e10cSrcweir if(pEdArg !=NULL) 400cdf0e10cSrcweir { 401cdf0e10cSrcweir pEdArg ->SetRefString(aVal ); 402cdf0e10cSrcweir } 403cdf0e10cSrcweir } 404cdf0e10cSrcweir 405cdf0e10cSrcweir /************************************************************************* 406cdf0e10cSrcweir #* Member: SetArgName Datum:13.01.97 407cdf0e10cSrcweir #*------------------------------------------------------------------------ 408cdf0e10cSrcweir #* 409cdf0e10cSrcweir #* Klasse: ArgInput 410cdf0e10cSrcweir #* 411cdf0e10cSrcweir #* Funktion: Liefert den Wert fuer das Argument 412cdf0e10cSrcweir #* 413cdf0e10cSrcweir #* Input: --- 414cdf0e10cSrcweir #* 415cdf0e10cSrcweir #* Output: String 416cdf0e10cSrcweir #* 417cdf0e10cSrcweir #************************************************************************/ 418cdf0e10cSrcweir String ArgInput::GetArgVal() 419cdf0e10cSrcweir { 420cdf0e10cSrcweir String aResult; 421cdf0e10cSrcweir if(pEdArg!=NULL) 422cdf0e10cSrcweir { 423cdf0e10cSrcweir aResult=pEdArg->GetText(); 424cdf0e10cSrcweir } 425cdf0e10cSrcweir return aResult; 426cdf0e10cSrcweir } 427cdf0e10cSrcweir 428cdf0e10cSrcweir /************************************************************************* 429cdf0e10cSrcweir #* Member: SetArgName Datum:13.01.97 430cdf0e10cSrcweir #*------------------------------------------------------------------------ 431cdf0e10cSrcweir #* 432cdf0e10cSrcweir #* Klasse: ArgInput 433cdf0e10cSrcweir #* 434cdf0e10cSrcweir #* Funktion: Versteckt die Controls 435cdf0e10cSrcweir #* 436cdf0e10cSrcweir #* Input: --- 437cdf0e10cSrcweir #* 438cdf0e10cSrcweir #* Output: --- 439cdf0e10cSrcweir #* 440cdf0e10cSrcweir #************************************************************************/ 441cdf0e10cSrcweir void ArgInput::Hide() 442cdf0e10cSrcweir { 443cdf0e10cSrcweir if ( pFtArg && pBtnFx && pEdArg && pRefBtn) 444cdf0e10cSrcweir { 445cdf0e10cSrcweir pFtArg->Hide(); 446cdf0e10cSrcweir pBtnFx->Hide(); 447cdf0e10cSrcweir pEdArg->Hide(); 448cdf0e10cSrcweir pRefBtn->Hide(); 449cdf0e10cSrcweir } 450cdf0e10cSrcweir } 451cdf0e10cSrcweir 452cdf0e10cSrcweir /************************************************************************* 453cdf0e10cSrcweir #* Member: SetArgName Datum:13.01.97 454cdf0e10cSrcweir #*------------------------------------------------------------------------ 455cdf0e10cSrcweir #* 456cdf0e10cSrcweir #* Klasse: ArgInput 457cdf0e10cSrcweir #* 458cdf0e10cSrcweir #* Funktion: Zaubert die Controls wieder hervor. 459cdf0e10cSrcweir #* 460cdf0e10cSrcweir #* Input: --- 461cdf0e10cSrcweir #* 462cdf0e10cSrcweir #* Output: --- 463cdf0e10cSrcweir #* 464cdf0e10cSrcweir #************************************************************************/ 465cdf0e10cSrcweir void ArgInput::Show() 466cdf0e10cSrcweir { 467cdf0e10cSrcweir if ( pFtArg && pBtnFx && pEdArg && pRefBtn) 468cdf0e10cSrcweir { 469cdf0e10cSrcweir pFtArg->Show(); 470cdf0e10cSrcweir pBtnFx->Show(); 471cdf0e10cSrcweir pEdArg->Show(); 472cdf0e10cSrcweir pRefBtn->Show(); 473cdf0e10cSrcweir } 474cdf0e10cSrcweir } 475cdf0e10cSrcweir 476cdf0e10cSrcweir /************************************************************************* 477cdf0e10cSrcweir #* Member: FxClick Datum:13.01.97 478cdf0e10cSrcweir #*------------------------------------------------------------------------ 479cdf0e10cSrcweir #* 480cdf0e10cSrcweir #* Klasse: ArgInput 481cdf0e10cSrcweir #* 482cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 483cdf0e10cSrcweir #* 484cdf0e10cSrcweir #* Input: --- 485cdf0e10cSrcweir #* 486cdf0e10cSrcweir #* Output: --- 487cdf0e10cSrcweir #* 488cdf0e10cSrcweir #************************************************************************/ 489cdf0e10cSrcweir void ArgInput::FxClick() 490cdf0e10cSrcweir { 491cdf0e10cSrcweir aFxClickLink.Call(this); 492cdf0e10cSrcweir } 493cdf0e10cSrcweir 494cdf0e10cSrcweir /************************************************************************* 495cdf0e10cSrcweir #* Member: RefClick Datum:13.01.97 496cdf0e10cSrcweir #*------------------------------------------------------------------------ 497cdf0e10cSrcweir #* 498cdf0e10cSrcweir #* Klasse: ArgInput 499cdf0e10cSrcweir #* 500cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 501cdf0e10cSrcweir #* 502cdf0e10cSrcweir #* Input: --- 503cdf0e10cSrcweir #* 504cdf0e10cSrcweir #* Output: --- 505cdf0e10cSrcweir #* 506cdf0e10cSrcweir #************************************************************************/ 507cdf0e10cSrcweir void ArgInput::RefClick() 508cdf0e10cSrcweir { 509cdf0e10cSrcweir aRefClickLink.Call(this); 510cdf0e10cSrcweir } 511cdf0e10cSrcweir 512cdf0e10cSrcweir /************************************************************************* 513cdf0e10cSrcweir #* Member: FxFocus Datum:13.01.97 514cdf0e10cSrcweir #*------------------------------------------------------------------------ 515cdf0e10cSrcweir #* 516cdf0e10cSrcweir #* Klasse: ArgInput 517cdf0e10cSrcweir #* 518cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 519cdf0e10cSrcweir #* 520cdf0e10cSrcweir #* Input: --- 521cdf0e10cSrcweir #* 522cdf0e10cSrcweir #* Output: --- 523cdf0e10cSrcweir #* 524cdf0e10cSrcweir #************************************************************************/ 525cdf0e10cSrcweir void ArgInput::FxFocus() 526cdf0e10cSrcweir { 527cdf0e10cSrcweir aFxFocusLink.Call(this); 528cdf0e10cSrcweir } 529cdf0e10cSrcweir 530cdf0e10cSrcweir /************************************************************************* 531cdf0e10cSrcweir #* Member: RefFocus Datum:13.01.97 532cdf0e10cSrcweir #*------------------------------------------------------------------------ 533cdf0e10cSrcweir #* 534cdf0e10cSrcweir #* Klasse: ArgInput 535cdf0e10cSrcweir #* 536cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 537cdf0e10cSrcweir #* 538cdf0e10cSrcweir #* Input: --- 539cdf0e10cSrcweir #* 540cdf0e10cSrcweir #* Output: --- 541cdf0e10cSrcweir #* 542cdf0e10cSrcweir #************************************************************************/ 543cdf0e10cSrcweir void ArgInput::RefFocus() 544cdf0e10cSrcweir { 545cdf0e10cSrcweir aRefFocusLink.Call(this); 546cdf0e10cSrcweir } 547cdf0e10cSrcweir 548cdf0e10cSrcweir /************************************************************************* 549cdf0e10cSrcweir #* Member: EdFocus Datum:13.01.97 550cdf0e10cSrcweir #*------------------------------------------------------------------------ 551cdf0e10cSrcweir #* 552cdf0e10cSrcweir #* Klasse: ArgInput 553cdf0e10cSrcweir #* 554cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 555cdf0e10cSrcweir #* 556cdf0e10cSrcweir #* Input: --- 557cdf0e10cSrcweir #* 558cdf0e10cSrcweir #* Output: --- 559cdf0e10cSrcweir #* 560cdf0e10cSrcweir #************************************************************************/ 561cdf0e10cSrcweir void ArgInput::EdFocus() 562cdf0e10cSrcweir { 563cdf0e10cSrcweir aEdFocusLink.Call(this); 564cdf0e10cSrcweir } 565cdf0e10cSrcweir 566cdf0e10cSrcweir /************************************************************************* 567cdf0e10cSrcweir #* Member: EdModify Datum:13.01.97 568cdf0e10cSrcweir #*------------------------------------------------------------------------ 569cdf0e10cSrcweir #* 570cdf0e10cSrcweir #* Klasse: ArgInput 571cdf0e10cSrcweir #* 572cdf0e10cSrcweir #* Funktion: Gibt den Event weiter. 573cdf0e10cSrcweir #* 574cdf0e10cSrcweir #* Input: --- 575cdf0e10cSrcweir #* 576cdf0e10cSrcweir #* Output: --- 577cdf0e10cSrcweir #* 578cdf0e10cSrcweir #************************************************************************/ 579cdf0e10cSrcweir void ArgInput::EdModify() 580cdf0e10cSrcweir { 581cdf0e10cSrcweir aEdModifyLink.Call(this); 582cdf0e10cSrcweir } 583cdf0e10cSrcweir 584cdf0e10cSrcweir /************************************************************************* 585cdf0e10cSrcweir #* Handle: FxBtnHdl Datum:13.01.97 586cdf0e10cSrcweir #*------------------------------------------------------------------------ 587cdf0e10cSrcweir #* 588cdf0e10cSrcweir #* Klasse: ArgInput 589cdf0e10cSrcweir #* 590cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Click-Event. 591cdf0e10cSrcweir #* 592cdf0e10cSrcweir #* Input: --- 593cdf0e10cSrcweir #* 594cdf0e10cSrcweir #* Output: --- 595cdf0e10cSrcweir #* 596cdf0e10cSrcweir #************************************************************************/ 597cdf0e10cSrcweir IMPL_LINK( ArgInput, FxBtnClickHdl, ImageButton*, pBtn ) 598cdf0e10cSrcweir { 599cdf0e10cSrcweir if(pBtn==pBtnFx) FxClick(); 600cdf0e10cSrcweir 601cdf0e10cSrcweir return 0; 602cdf0e10cSrcweir } 603cdf0e10cSrcweir 604cdf0e10cSrcweir /************************************************************************* 605cdf0e10cSrcweir #* Handle: RefBtnClickHdl Datum:13.01.97 606cdf0e10cSrcweir #*------------------------------------------------------------------------ 607cdf0e10cSrcweir #* 608cdf0e10cSrcweir #* Klasse: ArgInput 609cdf0e10cSrcweir #* 610cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Click-Event. 611cdf0e10cSrcweir #* 612cdf0e10cSrcweir #* Input: --- 613cdf0e10cSrcweir #* 614cdf0e10cSrcweir #* Output: --- 615cdf0e10cSrcweir #* 616cdf0e10cSrcweir #************************************************************************/ 617cdf0e10cSrcweir IMPL_LINK( ArgInput, RefBtnClickHdl,RefButton*, pBtn ) 618cdf0e10cSrcweir { 619cdf0e10cSrcweir if(pRefBtn==pBtn) RefClick(); 620cdf0e10cSrcweir 621cdf0e10cSrcweir return 0; 622cdf0e10cSrcweir } 623cdf0e10cSrcweir 624cdf0e10cSrcweir /************************************************************************* 625cdf0e10cSrcweir #* Handle: FxBtnFocusHdl Datum:13.01.97 626cdf0e10cSrcweir #*------------------------------------------------------------------------ 627cdf0e10cSrcweir #* 628cdf0e10cSrcweir #* Klasse: ArgInput 629cdf0e10cSrcweir #* 630cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Focus-Event. 631cdf0e10cSrcweir #* 632cdf0e10cSrcweir #* Input: --- 633cdf0e10cSrcweir #* 634cdf0e10cSrcweir #* Output: --- 635cdf0e10cSrcweir #* 636cdf0e10cSrcweir #************************************************************************/ 637cdf0e10cSrcweir IMPL_LINK( ArgInput, FxBtnFocusHdl, ImageButton*, pBtn ) 638cdf0e10cSrcweir { 639cdf0e10cSrcweir if(pBtn==pBtnFx) FxFocus(); 640cdf0e10cSrcweir 641cdf0e10cSrcweir return 0; 642cdf0e10cSrcweir } 643cdf0e10cSrcweir 644cdf0e10cSrcweir /************************************************************************* 645cdf0e10cSrcweir #* Handle: RefBtnFocusHdl Datum:13.01.97 646cdf0e10cSrcweir #*------------------------------------------------------------------------ 647cdf0e10cSrcweir #* 648cdf0e10cSrcweir #* Klasse: ArgInput 649cdf0e10cSrcweir #* 650cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Focus-Event. 651cdf0e10cSrcweir #* 652cdf0e10cSrcweir #* Input: --- 653cdf0e10cSrcweir #* 654cdf0e10cSrcweir #* Output: --- 655cdf0e10cSrcweir #* 656cdf0e10cSrcweir #************************************************************************/ 657cdf0e10cSrcweir IMPL_LINK( ArgInput, RefBtnFocusHdl,RefButton*, pBtn ) 658cdf0e10cSrcweir { 659cdf0e10cSrcweir if(pRefBtn==pBtn) RefFocus(); 660cdf0e10cSrcweir 661cdf0e10cSrcweir return 0; 662cdf0e10cSrcweir } 663cdf0e10cSrcweir 664cdf0e10cSrcweir /************************************************************************* 665cdf0e10cSrcweir #* Handle: EdFocusHdl Datum:13.01.97 666cdf0e10cSrcweir #*------------------------------------------------------------------------ 667cdf0e10cSrcweir #* 668cdf0e10cSrcweir #* Klasse: ArgInput 669cdf0e10cSrcweir #* 670cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Focus-Event. 671cdf0e10cSrcweir #* 672cdf0e10cSrcweir #* Input: --- 673cdf0e10cSrcweir #* 674cdf0e10cSrcweir #* Output: --- 675cdf0e10cSrcweir #* 676cdf0e10cSrcweir #************************************************************************/ 677cdf0e10cSrcweir IMPL_LINK( ArgInput, EdFocusHdl, ArgEdit*, pEd ) 678cdf0e10cSrcweir { 679cdf0e10cSrcweir if(pEd==pEdArg) EdFocus(); 680cdf0e10cSrcweir 681cdf0e10cSrcweir return 0; 682cdf0e10cSrcweir } 683cdf0e10cSrcweir 684cdf0e10cSrcweir /************************************************************************* 685cdf0e10cSrcweir #* Handle: RefBtnClickHdl Datum:13.01.97 686cdf0e10cSrcweir #*------------------------------------------------------------------------ 687cdf0e10cSrcweir #* 688cdf0e10cSrcweir #* Klasse: ArgInput 689cdf0e10cSrcweir #* 690cdf0e10cSrcweir #* Funktion: Handle fuer Fx-Button Focus-Event. 691cdf0e10cSrcweir #* 692cdf0e10cSrcweir #* Input: --- 693cdf0e10cSrcweir #* 694cdf0e10cSrcweir #* Output: --- 695cdf0e10cSrcweir #* 696cdf0e10cSrcweir #************************************************************************/ 697cdf0e10cSrcweir IMPL_LINK( ArgInput, EdModifyHdl,ArgEdit*, pEd ) 698cdf0e10cSrcweir { 699cdf0e10cSrcweir if(pEd==pEdArg) EdModify(); 700cdf0e10cSrcweir 701cdf0e10cSrcweir return 0; 702cdf0e10cSrcweir } 703cdf0e10cSrcweir 704cdf0e10cSrcweir /************************************************************************* 705cdf0e10cSrcweir #* Member: EditBox Datum:20.01.97 706cdf0e10cSrcweir #*------------------------------------------------------------------------ 707cdf0e10cSrcweir #* 708cdf0e10cSrcweir #* Klasse: EditBox 709cdf0e10cSrcweir #* 710cdf0e10cSrcweir #* Funktion: Konstruktor der Klasse ArgInput 711cdf0e10cSrcweir #* 712cdf0e10cSrcweir #* Input: Parent, Window-Style 713cdf0e10cSrcweir #* 714cdf0e10cSrcweir #* Output: --- 715cdf0e10cSrcweir #* 716cdf0e10cSrcweir #************************************************************************/ 717cdf0e10cSrcweir EditBox::EditBox( Window* pParent,WinBits nWinStyle) 718cdf0e10cSrcweir :Control(pParent,nWinStyle|WB_DIALOGCONTROL) 719cdf0e10cSrcweir { 720cdf0e10cSrcweir pMEdit=new MultiLineEdit(this,WB_LEFT | WB_VSCROLL | (nWinStyle & WB_TABSTOP) | 721cdf0e10cSrcweir WB_NOBORDER | WB_NOHIDESELECTION | WB_IGNORETAB); 722cdf0e10cSrcweir 723cdf0e10cSrcweir pMEdit->Show(); 724cdf0e10cSrcweir aOldSel=pMEdit->GetSelection(); 725cdf0e10cSrcweir } 726cdf0e10cSrcweir 727cdf0e10cSrcweir /************************************************************************* 728cdf0e10cSrcweir #* Member: EditBox Datum:20.01.97 729cdf0e10cSrcweir #*------------------------------------------------------------------------ 730cdf0e10cSrcweir #* 731cdf0e10cSrcweir #* Klasse: EditBox 732cdf0e10cSrcweir #* 733cdf0e10cSrcweir #* Funktion: Konstruktor der Klasse ArgInput 734cdf0e10cSrcweir #* 735cdf0e10cSrcweir #* Input: Parent, Resource 736cdf0e10cSrcweir #* 737cdf0e10cSrcweir #* Output: --- 738cdf0e10cSrcweir #* 739cdf0e10cSrcweir #************************************************************************/ 740cdf0e10cSrcweir EditBox::EditBox( Window* pParent, const ResId& rResId ) 741cdf0e10cSrcweir :Control(pParent,rResId), 742cdf0e10cSrcweir bMouseFlag(sal_False) 743cdf0e10cSrcweir { 744cdf0e10cSrcweir WinBits nStyle=GetStyle(); 745cdf0e10cSrcweir SetStyle( nStyle| WB_DIALOGCONTROL); 746cdf0e10cSrcweir 747cdf0e10cSrcweir pMEdit=new MultiLineEdit(this,WB_LEFT | WB_VSCROLL | (nStyle & WB_TABSTOP) | 748cdf0e10cSrcweir WB_NOBORDER | WB_NOHIDESELECTION | WB_IGNORETAB); 749cdf0e10cSrcweir pMEdit->Show(); 750cdf0e10cSrcweir aOldSel=pMEdit->GetSelection(); 751cdf0e10cSrcweir Resize(); 752cdf0e10cSrcweir WinBits nWinStyle=GetStyle() | WB_DIALOGCONTROL; 753cdf0e10cSrcweir SetStyle(nWinStyle); 754cdf0e10cSrcweir 755cdf0e10cSrcweir // #105582# the HelpId from the resource must be set for the MultiLineEdit, 756cdf0e10cSrcweir // not for the control that contains it. 757cdf0e10cSrcweir pMEdit->SetHelpId( GetHelpId() ); 758cdf0e10cSrcweir SetHelpId( "" ); 759cdf0e10cSrcweir } 760cdf0e10cSrcweir 761cdf0e10cSrcweir EditBox::~EditBox() 762cdf0e10cSrcweir { 763cdf0e10cSrcweir MultiLineEdit* pTheEdit=pMEdit; 764cdf0e10cSrcweir pMEdit->Disable(); 765cdf0e10cSrcweir pMEdit=NULL; 766cdf0e10cSrcweir delete pTheEdit; 767cdf0e10cSrcweir } 768cdf0e10cSrcweir /************************************************************************* 769cdf0e10cSrcweir #* Member: EditBox Datum:20.01.97 770cdf0e10cSrcweir #*------------------------------------------------------------------------ 771cdf0e10cSrcweir #* 772cdf0e10cSrcweir #* Klasse: EditBox 773cdf0e10cSrcweir #* 774cdf0e10cSrcweir #* Funktion: Wenn sich die Selektion geaendert hat, so wird 775cdf0e10cSrcweir #* diese Funktion aufgerufen. 776cdf0e10cSrcweir #* 777cdf0e10cSrcweir #* Input: --- 778cdf0e10cSrcweir #* 779cdf0e10cSrcweir #* Output: --- 780cdf0e10cSrcweir #* 781cdf0e10cSrcweir #************************************************************************/ 782cdf0e10cSrcweir void EditBox::SelectionChanged() 783cdf0e10cSrcweir { 784cdf0e10cSrcweir aSelChangedLink.Call(this); 785cdf0e10cSrcweir } 786cdf0e10cSrcweir 787cdf0e10cSrcweir /************************************************************************* 788cdf0e10cSrcweir #* Member: EditBox Datum:20.05.98 789cdf0e10cSrcweir #*------------------------------------------------------------------------ 790cdf0e10cSrcweir #* 791cdf0e10cSrcweir #* Klasse: EditBox 792cdf0e10cSrcweir #* 793cdf0e10cSrcweir #* Funktion: Wenn sich die Groesse geaendert hat, so muss 794cdf0e10cSrcweir #* auch der MultiLineEdit angepasst werden.. 795cdf0e10cSrcweir #* 796cdf0e10cSrcweir #* Input: --- 797cdf0e10cSrcweir #* 798cdf0e10cSrcweir #* Output: --- 799cdf0e10cSrcweir #* 800cdf0e10cSrcweir #************************************************************************/ 801cdf0e10cSrcweir void EditBox::Resize() 802cdf0e10cSrcweir { 803cdf0e10cSrcweir Size aSize=GetOutputSizePixel(); 804cdf0e10cSrcweir if(pMEdit!=NULL) pMEdit->SetOutputSizePixel(aSize); 805cdf0e10cSrcweir } 806cdf0e10cSrcweir 807cdf0e10cSrcweir /************************************************************************* 808cdf0e10cSrcweir #* Member: GetFocus Datum:26.05.98 809cdf0e10cSrcweir #*------------------------------------------------------------------------ 810cdf0e10cSrcweir #* 811cdf0e10cSrcweir #* Klasse: EditBox 812cdf0e10cSrcweir #* 813cdf0e10cSrcweir #* Funktion: Wenn der Control aktiviert wird, so wird 814cdf0e10cSrcweir #* die Selection aufgehoben und der Cursor ans 815cdf0e10cSrcweir #* Ende gesetzt. 816cdf0e10cSrcweir #* 817cdf0e10cSrcweir #* Input: --- 818cdf0e10cSrcweir #* 819cdf0e10cSrcweir #* Output: --- 820cdf0e10cSrcweir #* 821cdf0e10cSrcweir #************************************************************************/ 822cdf0e10cSrcweir void EditBox::GetFocus() 823cdf0e10cSrcweir { 824cdf0e10cSrcweir if(pMEdit!=NULL) 825cdf0e10cSrcweir { 826cdf0e10cSrcweir pMEdit->GrabFocus(); 827cdf0e10cSrcweir } 828cdf0e10cSrcweir } 829cdf0e10cSrcweir 830cdf0e10cSrcweir 831cdf0e10cSrcweir 832cdf0e10cSrcweir /************************************************************************* 833cdf0e10cSrcweir #* Member: EditBox Datum:20.01.97 834cdf0e10cSrcweir #*------------------------------------------------------------------------ 835cdf0e10cSrcweir #* 836cdf0e10cSrcweir #* Klasse: EditBox 837cdf0e10cSrcweir #* 838cdf0e10cSrcweir #* Funktion: Wenn ein Event ausgeloest wird, so wird diese Routine 839cdf0e10cSrcweir #* zuerst aufgerufen und ein PostUserEvent verschickt. 840cdf0e10cSrcweir #* 841cdf0e10cSrcweir #* Input: Notify-Event 842cdf0e10cSrcweir #* 843cdf0e10cSrcweir #* Output: --- 844cdf0e10cSrcweir #* 845cdf0e10cSrcweir #************************************************************************/ 846cdf0e10cSrcweir long EditBox::PreNotify( NotifyEvent& rNEvt ) 847cdf0e10cSrcweir { 848cdf0e10cSrcweir long nResult=sal_True; 849cdf0e10cSrcweir 850cdf0e10cSrcweir if(pMEdit==NULL) return nResult; 851cdf0e10cSrcweir 852cdf0e10cSrcweir sal_uInt16 nSwitch=rNEvt.GetType(); 853cdf0e10cSrcweir if(nSwitch==EVENT_KEYINPUT)// || nSwitch==EVENT_KEYUP) 854cdf0e10cSrcweir { 855cdf0e10cSrcweir const KeyCode& aKeyCode=rNEvt.GetKeyEvent()->GetKeyCode(); 856cdf0e10cSrcweir sal_uInt16 nKey=aKeyCode.GetCode(); 857cdf0e10cSrcweir if( (nKey==KEY_RETURN && !aKeyCode.IsShift()) || nKey==KEY_TAB ) 858cdf0e10cSrcweir { 859cdf0e10cSrcweir nResult=GetParent()->Notify(rNEvt); 860cdf0e10cSrcweir } 861cdf0e10cSrcweir else 862cdf0e10cSrcweir { 863cdf0e10cSrcweir nResult=Control::PreNotify(rNEvt); 864cdf0e10cSrcweir Application::PostUserEvent( LINK( this, EditBox, ChangedHdl ) ); 865cdf0e10cSrcweir } 866cdf0e10cSrcweir 867cdf0e10cSrcweir } 868cdf0e10cSrcweir else 869cdf0e10cSrcweir { 870cdf0e10cSrcweir nResult=Control::PreNotify(rNEvt); 871cdf0e10cSrcweir 872cdf0e10cSrcweir if(nSwitch==EVENT_MOUSEBUTTONDOWN || nSwitch==EVENT_MOUSEBUTTONUP) 873cdf0e10cSrcweir { 874cdf0e10cSrcweir bMouseFlag=sal_True; 875cdf0e10cSrcweir Application::PostUserEvent( LINK( this, EditBox, ChangedHdl ) ); 876cdf0e10cSrcweir } 877cdf0e10cSrcweir } 878cdf0e10cSrcweir return nResult; 879cdf0e10cSrcweir } 880cdf0e10cSrcweir 881cdf0e10cSrcweir /************************************************************************* 882cdf0e10cSrcweir #* Member: EditBox Datum:21.01.97 883cdf0e10cSrcweir #*------------------------------------------------------------------------ 884cdf0e10cSrcweir #* 885cdf0e10cSrcweir #* Klasse: EditBox 886cdf0e10cSrcweir #* 887cdf0e10cSrcweir #* Funktion: Wenn ein Event ausgeloest wurde, so wird diese Routine 888cdf0e10cSrcweir #* zuerst aufgerufen. 889cdf0e10cSrcweir #* 890cdf0e10cSrcweir #* Input: Key-Event 891cdf0e10cSrcweir #* 892cdf0e10cSrcweir #* Output: --- 893cdf0e10cSrcweir #* 894cdf0e10cSrcweir #************************************************************************/ 895cdf0e10cSrcweir IMPL_LINK( EditBox, ChangedHdl, EditBox*, EMPTYARG ) 896cdf0e10cSrcweir { 897cdf0e10cSrcweir if(pMEdit!=NULL) 898cdf0e10cSrcweir { 899cdf0e10cSrcweir Selection aNewSel=pMEdit->GetSelection(); 900cdf0e10cSrcweir 901cdf0e10cSrcweir if(aNewSel.Min()!=aOldSel.Min() || aNewSel.Max()!=aOldSel.Max()) 902cdf0e10cSrcweir { 903cdf0e10cSrcweir SelectionChanged(); 904cdf0e10cSrcweir aOldSel=aNewSel; 905cdf0e10cSrcweir } 906cdf0e10cSrcweir } 907cdf0e10cSrcweir return 0; 908cdf0e10cSrcweir } 909cdf0e10cSrcweir 910cdf0e10cSrcweir void EditBox::UpdateOldSel() 911cdf0e10cSrcweir { 912cdf0e10cSrcweir // if selection is set for editing a function, store it as aOldSel, 913cdf0e10cSrcweir // so SelectionChanged isn't called in the next ChangedHdl call 914cdf0e10cSrcweir 915cdf0e10cSrcweir if (pMEdit) 916cdf0e10cSrcweir aOldSel = pMEdit->GetSelection(); 917cdf0e10cSrcweir } 918cdf0e10cSrcweir //---------------------------------------------------------------------------- 919cdf0e10cSrcweir 920cdf0e10cSrcweir //============================================================================ 921cdf0e10cSrcweir // class RefEdit 922cdf0e10cSrcweir //---------------------------------------------------------------------------- 923cdf0e10cSrcweir 924cdf0e10cSrcweir #define SC_ENABLE_TIME 100 925cdf0e10cSrcweir 926cdf0e10cSrcweir RefEdit::RefEdit( Window* _pParent,IControlReferenceHandler* pParent, const ResId& rResId ) : 927cdf0e10cSrcweir Edit( _pParent, rResId ), 928cdf0e10cSrcweir pAnyRefDlg( pParent ), 929cdf0e10cSrcweir bSilentFocus( sal_False ) 930cdf0e10cSrcweir { 931cdf0e10cSrcweir aTimer.SetTimeoutHdl( LINK( this, RefEdit, UpdateHdl ) ); 932cdf0e10cSrcweir aTimer.SetTimeout( SC_ENABLE_TIME ); 933cdf0e10cSrcweir } 934cdf0e10cSrcweir 935cdf0e10cSrcweir RefEdit::RefEdit( Window* pParent, const ResId& rResId ) : 936cdf0e10cSrcweir Edit( pParent, rResId ), 937cdf0e10cSrcweir pAnyRefDlg( NULL ), 938cdf0e10cSrcweir bSilentFocus( sal_False ) 939cdf0e10cSrcweir { 940cdf0e10cSrcweir } 941cdf0e10cSrcweir 942cdf0e10cSrcweir RefEdit::~RefEdit() 943cdf0e10cSrcweir { 944cdf0e10cSrcweir aTimer.SetTimeoutHdl( Link() ); 945cdf0e10cSrcweir aTimer.Stop(); 946cdf0e10cSrcweir } 947cdf0e10cSrcweir 948cdf0e10cSrcweir void RefEdit::SetRefString( const XubString& rStr ) 949cdf0e10cSrcweir { 950cdf0e10cSrcweir Edit::SetText( rStr ); 951cdf0e10cSrcweir } 952cdf0e10cSrcweir 953cdf0e10cSrcweir void RefEdit::SetText( const XubString& rStr ) 954cdf0e10cSrcweir { 955cdf0e10cSrcweir Edit::SetText( rStr ); 956cdf0e10cSrcweir UpdateHdl( &aTimer ); 957cdf0e10cSrcweir } 958cdf0e10cSrcweir 959cdf0e10cSrcweir void RefEdit::StartUpdateData() 960cdf0e10cSrcweir { 961cdf0e10cSrcweir aTimer.Start(); 962cdf0e10cSrcweir } 963cdf0e10cSrcweir 964cdf0e10cSrcweir void RefEdit::SilentGrabFocus() 965cdf0e10cSrcweir { 966cdf0e10cSrcweir bSilentFocus = sal_True; 967cdf0e10cSrcweir GrabFocus(); 968cdf0e10cSrcweir bSilentFocus = sal_False; 969cdf0e10cSrcweir } 970cdf0e10cSrcweir 971cdf0e10cSrcweir void RefEdit::SetRefDialog( IControlReferenceHandler* pDlg ) 972cdf0e10cSrcweir { 973cdf0e10cSrcweir pAnyRefDlg = pDlg; 974cdf0e10cSrcweir 975cdf0e10cSrcweir if( pDlg ) 976cdf0e10cSrcweir { 977cdf0e10cSrcweir aTimer.SetTimeoutHdl( LINK( this, RefEdit, UpdateHdl ) ); 978cdf0e10cSrcweir aTimer.SetTimeout( SC_ENABLE_TIME ); 979cdf0e10cSrcweir } 980cdf0e10cSrcweir else 981cdf0e10cSrcweir { 982cdf0e10cSrcweir aTimer.SetTimeoutHdl( Link() ); 983cdf0e10cSrcweir aTimer.Stop(); 984cdf0e10cSrcweir } 985cdf0e10cSrcweir } 986cdf0e10cSrcweir 987cdf0e10cSrcweir void RefEdit::Modify() 988cdf0e10cSrcweir { 989cdf0e10cSrcweir Edit::Modify(); 990cdf0e10cSrcweir if( pAnyRefDlg ) 991cdf0e10cSrcweir pAnyRefDlg->HideReference(); 992cdf0e10cSrcweir } 993cdf0e10cSrcweir 994cdf0e10cSrcweir void RefEdit::KeyInput( const KeyEvent& rKEvt ) 995cdf0e10cSrcweir { 996cdf0e10cSrcweir const KeyCode& rKeyCode = rKEvt.GetKeyCode(); 997cdf0e10cSrcweir if( pAnyRefDlg && !rKeyCode.GetModifier() && (rKeyCode.GetCode() == KEY_F2) ) 998cdf0e10cSrcweir pAnyRefDlg->ReleaseFocus( this ); 999cdf0e10cSrcweir else 1000cdf0e10cSrcweir Edit::KeyInput( rKEvt ); 1001cdf0e10cSrcweir } 1002cdf0e10cSrcweir 1003cdf0e10cSrcweir void RefEdit::GetFocus() 1004cdf0e10cSrcweir { 1005cdf0e10cSrcweir Edit::GetFocus(); 1006cdf0e10cSrcweir if( !bSilentFocus ) 1007cdf0e10cSrcweir StartUpdateData(); 1008cdf0e10cSrcweir } 1009cdf0e10cSrcweir 1010cdf0e10cSrcweir void RefEdit::LoseFocus() 1011cdf0e10cSrcweir { 1012cdf0e10cSrcweir Edit::LoseFocus(); 1013cdf0e10cSrcweir if( pAnyRefDlg ) 1014cdf0e10cSrcweir pAnyRefDlg->HideReference(); 1015cdf0e10cSrcweir } 1016cdf0e10cSrcweir 1017cdf0e10cSrcweir IMPL_LINK( RefEdit, UpdateHdl, Timer*, EMPTYARG ) 1018cdf0e10cSrcweir { 1019cdf0e10cSrcweir if( pAnyRefDlg ) 1020cdf0e10cSrcweir pAnyRefDlg->ShowReference( GetText() ); 1021cdf0e10cSrcweir return 0; 1022cdf0e10cSrcweir } 1023cdf0e10cSrcweir 1024cdf0e10cSrcweir 1025cdf0e10cSrcweir //============================================================================ 1026cdf0e10cSrcweir // class RefButton 1027cdf0e10cSrcweir //---------------------------------------------------------------------------- 1028cdf0e10cSrcweir RefButton::RefButton( Window* _pParent, const ResId& rResId) : 1029cdf0e10cSrcweir ImageButton( _pParent, rResId ), 1030cdf0e10cSrcweir aImgRefStart( ModuleRes( RID_BMP_REFBTN1 ) ), 1031cdf0e10cSrcweir aImgRefStartHC( ModuleRes( RID_BMP_REFBTN1_H ) ), 1032cdf0e10cSrcweir aImgRefDone( ModuleRes( RID_BMP_REFBTN2 ) ), 1033cdf0e10cSrcweir aImgRefDoneHC( ModuleRes( RID_BMP_REFBTN2_H ) ), 1034cdf0e10cSrcweir pAnyRefDlg( NULL ), 1035cdf0e10cSrcweir pRefEdit( NULL ) 1036cdf0e10cSrcweir { 1037cdf0e10cSrcweir SetStartImage(); 1038cdf0e10cSrcweir } 1039cdf0e10cSrcweir 1040cdf0e10cSrcweir RefButton::RefButton( Window* _pParent, const ResId& rResId, RefEdit* pEdit, IControlReferenceHandler* _pDlg ) : 1041cdf0e10cSrcweir ImageButton( _pParent, rResId ), 1042cdf0e10cSrcweir aImgRefStart( ModuleRes( RID_BMP_REFBTN1 ) ), 1043cdf0e10cSrcweir aImgRefStartHC( ModuleRes( RID_BMP_REFBTN1_H ) ), 1044cdf0e10cSrcweir aImgRefDone( ModuleRes( RID_BMP_REFBTN2 ) ), 1045cdf0e10cSrcweir aImgRefDoneHC( ModuleRes( RID_BMP_REFBTN2_H ) ), 1046cdf0e10cSrcweir pAnyRefDlg( _pDlg ), 1047cdf0e10cSrcweir pRefEdit( pEdit ) 1048cdf0e10cSrcweir { 1049cdf0e10cSrcweir SetStartImage(); 1050cdf0e10cSrcweir } 1051cdf0e10cSrcweir 1052cdf0e10cSrcweir void RefButton::SetStartImage() 1053cdf0e10cSrcweir { 1054cdf0e10cSrcweir SetModeImage( aImgRefStart ); 1055cdf0e10cSrcweir SetModeImage( aImgRefStartHC, BMP_COLOR_HIGHCONTRAST ); 1056cdf0e10cSrcweir } 1057cdf0e10cSrcweir 1058cdf0e10cSrcweir void RefButton::SetEndImage() 1059cdf0e10cSrcweir { 1060cdf0e10cSrcweir SetModeImage( aImgRefDone ); 1061cdf0e10cSrcweir SetModeImage( aImgRefDoneHC, BMP_COLOR_HIGHCONTRAST ); 1062cdf0e10cSrcweir } 1063cdf0e10cSrcweir 1064cdf0e10cSrcweir void RefButton::SetReferences( IControlReferenceHandler* pDlg, RefEdit* pEdit ) 1065cdf0e10cSrcweir { 1066cdf0e10cSrcweir pAnyRefDlg = pDlg; 1067cdf0e10cSrcweir pRefEdit = pEdit; 1068cdf0e10cSrcweir } 1069cdf0e10cSrcweir 1070cdf0e10cSrcweir //---------------------------------------------------------------------------- 1071cdf0e10cSrcweir 1072cdf0e10cSrcweir void RefButton::Click() 1073cdf0e10cSrcweir { 1074cdf0e10cSrcweir if( pAnyRefDlg ) 1075cdf0e10cSrcweir pAnyRefDlg->ToggleCollapsed( pRefEdit, this ); 1076cdf0e10cSrcweir } 1077cdf0e10cSrcweir 1078cdf0e10cSrcweir void RefButton::KeyInput( const KeyEvent& rKEvt ) 1079cdf0e10cSrcweir { 1080cdf0e10cSrcweir const KeyCode& rKeyCode = rKEvt.GetKeyCode(); 1081cdf0e10cSrcweir if( pAnyRefDlg && !rKeyCode.GetModifier() && (rKeyCode.GetCode() == KEY_F2) ) 1082cdf0e10cSrcweir pAnyRefDlg->ReleaseFocus( pRefEdit ); 1083cdf0e10cSrcweir else 1084cdf0e10cSrcweir ImageButton::KeyInput( rKEvt ); 1085cdf0e10cSrcweir } 1086cdf0e10cSrcweir 1087cdf0e10cSrcweir void RefButton::GetFocus() 1088cdf0e10cSrcweir { 1089cdf0e10cSrcweir ImageButton::GetFocus(); 1090cdf0e10cSrcweir if( pRefEdit ) 1091cdf0e10cSrcweir pRefEdit->StartUpdateData(); 1092cdf0e10cSrcweir } 1093cdf0e10cSrcweir 1094cdf0e10cSrcweir void RefButton::LoseFocus() 1095cdf0e10cSrcweir { 1096cdf0e10cSrcweir ImageButton::LoseFocus(); 1097cdf0e10cSrcweir if( pRefEdit ) 1098cdf0e10cSrcweir pRefEdit->Modify(); 1099cdf0e10cSrcweir } 1100cdf0e10cSrcweir 1101cdf0e10cSrcweir 1102cdf0e10cSrcweir } // formula 1103