xref: /aoo42x/main/sc/source/ui/optdlg/tpview.cxx (revision 5ba3629c)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_scui.hxx"
26 
27 
28 //------------------------------------------------------------------
29 
30 #include "scitems.hxx"
31 #include "tpview.hxx"
32 #include "global.hxx"
33 #include "viewopti.hxx"
34 #include "tabvwsh.hxx"
35 #include "uiitems.hxx"
36 #include "scresid.hxx"
37 #include "docsh.hxx"
38 #include "sc.hrc"       // -> Slot-IDs
39 #include "optdlg.hrc"
40 #include "globstr.hrc"
41 #include <appoptio.hxx>
42 #include <scmod.hxx>
43 #include <svx/dlgutil.hxx>
44 #include <svx/drawitem.hxx>
45 #include <svx/xtable.hxx>
46 
47 
48 // STATIC DATA -----------------------------------------------------------
49 
50 
51 
52 /*-----------------11.01.97 10.52-------------------
53 	Optionen Inhalte
54 --------------------------------------------------*/
55 
56 ScTpContentOptions::ScTpContentOptions( Window*			pParent,
57 							 const SfxItemSet&	rArgSet ) :
58 	SfxTabPage(pParent, ScResId( RID_SCPAGE_CONTENT ), rArgSet),
59 
60     aLinesGB( this,         ScResId(GB_LINES          )),
61 	aGridCB( this, 			ScResId(CB_GRID			)),
62 	aColorFT( this, 		ScResId(FT_COLOR			)),
63 	aColorLB( this, 		ScResId(LB_COLOR			)),
64 	aBreakCB( this,			ScResId(CB_PAGEBREAKS		)),
65 	aGuideLineCB( this, 	ScResId(CB_GUIDELINE		)),
66 	aBigHandleCB( this,	 	ScResId(CB_BIGHANDLES		)),
67 
68     aSeparator1FL    (this, ScResId(FL_SEPARATOR1 )),
69     aDisplayGB( this,   ScResId(GB_DISPLAY)),
70 	aFormulaCB( this, 	ScResId(CB_FORMULA)),
71 	aNilCB( this, 		ScResId(CB_NIL	)),
72 	aAnnotCB( this, 	ScResId(CB_ANNOT	)),
73 	aValueCB( this, 	ScResId(CB_VALUE	)),
74 	aAnchorCB( this, 	ScResId(CB_ANCHOR	)),
75 	aClipMarkCB( this, 	ScResId(CB_CLIP	)),
76     aRangeFindCB( this,     ScResId( CB_RFIND     )),
77 
78     aObjectGB( this,    ScResId(GB_OBJECT )),
79 	aObjGrfFT( this, 	ScResId(FT_OBJGRF	)),
80 	aObjGrfLB( this, 	ScResId(LB_OBJGRF	)),
81     aDiagramFT( this,   ScResId(FT_DIAGRAM)),
82 	aDiagramLB( this, 	ScResId(LB_DIAGRAM)),
83 	aDrawFT( this, 		ScResId(FT_DRAW	)),
84 	aDrawLB( this, 		ScResId(LB_DRAW	)),
85 
86     aZoomGB( this,      ScResId(GB_ZOOM) ),
87     aSyncZoomCB( this,  ScResId(CB_SYNCZOOM) ),
88 
89     aSeparator2FL    (this, ScResId(FL_SEPARATOR2)),
90     aWindowGB( this,        ScResId(GB_WINDOW         )),
91 	aRowColHeaderCB(this,	ScResId(CB_ROWCOLHEADER	)),
92 	aHScrollCB( this, 		ScResId(CB_HSCROLL		)),
93 	aVScrollCB( this, 		ScResId(CB_VSCROLL		)),
94 	aTblRegCB( this, 		ScResId(CB_TBLREG			)),
95 	aOutlineCB( this, 		ScResId(CB_OUTLINE		)),
96     pLocalOptions(0)
97 {
98 	FreeResource();
99     aSeparator1FL.SetStyle( aSeparator1FL.GetStyle() | WB_VERT );
100     aSeparator2FL.SetStyle( aSeparator2FL.GetStyle() | WB_VERT );
101     SetExchangeSupport();
102     Link aSelObjHdl(LINK( this, ScTpContentOptions, SelLbObjHdl ) );
103     aObjGrfLB.  SetSelectHdl(aSelObjHdl);
104     aDiagramLB. SetSelectHdl(aSelObjHdl);
105     aDrawLB.    SetSelectHdl(aSelObjHdl);
106 
107     Link aCBHdl(LINK( this, ScTpContentOptions, CBHdl ) );
108     aFormulaCB  .SetClickHdl(aCBHdl);
109     aNilCB      .SetClickHdl(aCBHdl);
110     aAnnotCB    .SetClickHdl(aCBHdl);
111     aValueCB    .SetClickHdl(aCBHdl);
112     aAnchorCB   .SetClickHdl(aCBHdl);
113     aClipMarkCB .SetClickHdl(aCBHdl);
114 
115     aVScrollCB  .SetClickHdl(aCBHdl);
116     aHScrollCB  .SetClickHdl(aCBHdl);
117     aTblRegCB   .SetClickHdl(aCBHdl);
118     aOutlineCB  .SetClickHdl(aCBHdl);
119     aBreakCB    .SetClickHdl(aCBHdl);
120     aGuideLineCB.SetClickHdl(aCBHdl);
121     aBigHandleCB.SetClickHdl(aCBHdl);
122     aRowColHeaderCB.SetClickHdl(aCBHdl);
123 
124     aGridCB     .SetClickHdl( LINK( this, ScTpContentOptions, GridHdl ) );
125 }
126 /*-----------------11.01.97 10.52-------------------
127 
128 --------------------------------------------------*/
129 
130 ScTpContentOptions::~ScTpContentOptions()
131 {
132 	delete pLocalOptions;
133 }
134 /*-----------------11.01.97 10.52-------------------
135 
136 --------------------------------------------------*/
137 
138 SfxTabPage*	ScTpContentOptions::Create( Window*		pParent,
139 							  const SfxItemSet&		rCoreSet )
140 {
141 	return new ScTpContentOptions(pParent, rCoreSet);
142 }
143 /*-----------------11.01.97 10.52-------------------
144 
145 --------------------------------------------------*/
146 sal_Bool	ScTpContentOptions::FillItemSet( SfxItemSet& rCoreSet )
147 {
148 	sal_Bool bRet = sal_False;
149 	if(	aFormulaCB	.GetSavedValue() != aFormulaCB	.IsChecked() ||
150 		aNilCB		.GetSavedValue() != aNilCB		.IsChecked() ||
151 		aAnnotCB  	.GetSavedValue() != aAnnotCB	.IsChecked() ||
152 		aValueCB  	.GetSavedValue() != aValueCB  	.IsChecked() ||
153 		aAnchorCB 	.GetSavedValue() != aAnchorCB 	.IsChecked() ||
154 		aClipMarkCB	.GetSavedValue() != aClipMarkCB	.IsChecked() ||
155 		aObjGrfLB   .GetSavedValue() != aObjGrfLB  	.GetSelectEntryPos() ||
156 		aDiagramLB  .GetSavedValue() != aDiagramLB 	.GetSelectEntryPos() ||
157         aDrawLB     .GetSavedValue() != aDrawLB     .GetSelectEntryPos() ||
158         aGridCB         .GetSavedValue() != aGridCB.IsChecked() ||
159 		aRowColHeaderCB	.GetSavedValue() != aRowColHeaderCB.IsChecked() ||
160 		aHScrollCB      .GetSavedValue() != aHScrollCB     .IsChecked() ||
161 		aVScrollCB      .GetSavedValue() != aVScrollCB     .IsChecked() ||
162 		aTblRegCB       .GetSavedValue() != aTblRegCB      .IsChecked() ||
163 		aOutlineCB      .GetSavedValue() != aOutlineCB     .IsChecked() ||
164 		aColorLB        .GetSavedValue() != aColorLB       .GetSelectEntryPos() ||
165 		aBreakCB		.GetSavedValue() != aBreakCB	   .IsChecked() ||
166 		aGuideLineCB    .GetSavedValue() != aGuideLineCB   .IsChecked() ||
167         aBigHandleCB    .GetSavedValue() != aBigHandleCB   .IsChecked())
168 	{
169         pLocalOptions->SetGridColor( aColorLB.GetSelectEntryColor(),
170 									 aColorLB.GetSelectEntry() );
171         rCoreSet.Put(ScTpViewItem(SID_SCVIEWOPTIONS, *pLocalOptions));
172 		bRet = sal_True;
173 	}
174     if(aRangeFindCB.GetSavedValue() != aRangeFindCB.IsChecked())
175     {
176         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_RANGEFINDER, aRangeFindCB.IsChecked()));
177         bRet = sal_True;
178     }
179     if(aSyncZoomCB.GetSavedValue() != aSyncZoomCB.IsChecked())
180     {
181         rCoreSet.Put(SfxBoolItem(SID_SC_OPT_SYNCZOOM, aSyncZoomCB.IsChecked()));
182         bRet = sal_True;
183     }
184 
185 
186     return bRet;
187 }
188 /*-----------------11.01.97 10.53-------------------
189 
190 --------------------------------------------------*/
191 
192 void	ScTpContentOptions::Reset( const SfxItemSet& rCoreSet )
193 {
194 	const SfxPoolItem* pItem;
195 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SCVIEWOPTIONS, sal_False , &pItem))
196 		pLocalOptions  = new ScViewOptions(
197 							((const ScTpViewItem*)pItem)->GetViewOptions() );
198 	else
199 		pLocalOptions = new ScViewOptions;
200 	aFormulaCB	.Check(pLocalOptions->GetOption(VOPT_FORMULAS));
201 	aNilCB		.Check(pLocalOptions->GetOption(VOPT_NULLVALS));
202 	aAnnotCB  	.Check(pLocalOptions->GetOption(VOPT_NOTES));
203 	aValueCB  	.Check(pLocalOptions->GetOption(VOPT_SYNTAX));
204 	aAnchorCB 	.Check(pLocalOptions->GetOption(VOPT_ANCHOR));
205 	aClipMarkCB	.Check(pLocalOptions->GetOption(VOPT_CLIPMARKS));
206 
207 	aObjGrfLB 	.SelectEntryPos( (sal_uInt16)pLocalOptions->GetObjMode(VOBJ_TYPE_OLE) );
208 	aDiagramLB  .SelectEntryPos( (sal_uInt16)pLocalOptions->GetObjMode(VOBJ_TYPE_CHART) );
209 	aDrawLB     .SelectEntryPos( (sal_uInt16)pLocalOptions->GetObjMode(VOBJ_TYPE_DRAW) );
210 
211 	aRowColHeaderCB.Check( pLocalOptions->GetOption(VOPT_HEADER) );
212 	aHScrollCB .Check( pLocalOptions->GetOption(VOPT_HSCROLL) );
213 	aVScrollCB .Check( pLocalOptions->GetOption(VOPT_VSCROLL) );
214 	aTblRegCB  .Check( pLocalOptions->GetOption(VOPT_TABCONTROLS) );
215 	aOutlineCB .Check( pLocalOptions->GetOption(VOPT_OUTLINER) );
216 
217 	InitGridOpt();
218 
219 	aBreakCB.Check( pLocalOptions->GetOption(VOPT_PAGEBREAKS) );
220 	aGuideLineCB.Check( pLocalOptions->GetOption(VOPT_HELPLINES) );
221 	aBigHandleCB.Check( pLocalOptions->GetOption(VOPT_BIGHANDLES) );
222 
223     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_RANGEFINDER, sal_False, &pItem))
224 		aRangeFindCB.Check(((const SfxBoolItem*)pItem)->GetValue());
225     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_OPT_SYNCZOOM, sal_False, &pItem))
226 		aSyncZoomCB.Check(((const SfxBoolItem*)pItem)->GetValue());
227 
228     aRangeFindCB.SaveValue();
229     aSyncZoomCB.SaveValue();
230 
231     aFormulaCB  .SaveValue();
232 	aNilCB		.SaveValue();
233 	aAnnotCB  	.SaveValue();
234 	aValueCB  	.SaveValue();
235 	aAnchorCB 	.SaveValue();
236 	aClipMarkCB	.SaveValue();
237 	aObjGrfLB   .SaveValue();
238 	aDiagramLB  .SaveValue();
239 	aDrawLB     .SaveValue();
240     aRowColHeaderCB .SaveValue();
241 	aHScrollCB      .SaveValue();
242 	aVScrollCB      .SaveValue();
243 	aTblRegCB       .SaveValue();
244 	aOutlineCB      .SaveValue();
245 	aGridCB         .SaveValue();
246 	aColorLB        .SaveValue();
247 	aBreakCB		.SaveValue();
248 	aGuideLineCB    .SaveValue();
249 	aBigHandleCB	.SaveValue();
250 }
251 /*-----------------11.01.97 12.45-------------------
252 
253 --------------------------------------------------*/
254 
255 void ScTpContentOptions::ActivatePage( const SfxItemSet& rSet)
256 {
257 	const SfxPoolItem* pItem;
258 	if(SFX_ITEM_SET == rSet.GetItemState(SID_SCVIEWOPTIONS, sal_False , &pItem))
259 		*pLocalOptions = ((const ScTpViewItem*)pItem)->GetViewOptions();
260 }
261 /*-----------------11.01.97 12.45-------------------
262 
263 --------------------------------------------------*/
264 
265 int	ScTpContentOptions::DeactivatePage( SfxItemSet* pSetP )
266 {
267     if(pSetP)
268         FillItemSet(*pSetP);
269 	return SfxTabPage::LEAVE_PAGE;
270 }
271 /*-----------------11.01.97 13.43-------------------
272 
273 --------------------------------------------------*/
274 
275 IMPL_LINK( ScTpContentOptions, SelLbObjHdl, ListBox*, pLb )
276 {
277 	sal_uInt16		nSelPos = pLb->GetSelectEntryPos();
278 	ScVObjMode	eMode	= ScVObjMode(nSelPos);
279 	ScVObjType	eType	= VOBJ_TYPE_OLE;
280 
281 	if ( pLb == &aDiagramLB )
282 		eType = VOBJ_TYPE_CHART;
283 	else if ( pLb == &aDrawLB )
284 		eType = VOBJ_TYPE_DRAW;
285 
286 	pLocalOptions->SetObjMode( eType, eMode );
287 
288 	return 0;
289 }
290 
291 /*-----------------11.01.97 14.25-------------------
292 
293 --------------------------------------------------*/
294 
295 IMPL_LINK( ScTpContentOptions, CBHdl, CheckBox*, pBtn )
296 {
297     ScViewOption eOption = VOPT_FORMULAS;
298 	sal_Bool		 bChecked = pBtn->IsChecked();
299 
300 	if ( 	  &aFormulaCB 	== pBtn )	eOption = VOPT_FORMULAS;
301 	else if ( &aNilCB 		== pBtn )	eOption = VOPT_NULLVALS;
302 	else if ( &aAnnotCB		== pBtn )	eOption = VOPT_NOTES;
303 	else if ( &aValueCB		== pBtn )	eOption = VOPT_SYNTAX;
304 	else if ( &aAnchorCB	== pBtn )   eOption = VOPT_ANCHOR;
305 	else if ( &aClipMarkCB	== pBtn )   eOption = VOPT_CLIPMARKS;
306     else if ( &aVScrollCB       == pBtn )   eOption = VOPT_VSCROLL;
307 	else if ( &aHScrollCB		== pBtn )	eOption = VOPT_HSCROLL;
308 	else if ( &aTblRegCB		== pBtn )	eOption = VOPT_TABCONTROLS;
309 	else if ( &aOutlineCB 		== pBtn )	eOption = VOPT_OUTLINER;
310 	else if ( &aBreakCB			== pBtn )	eOption = VOPT_PAGEBREAKS;
311 	else if ( &aGuideLineCB 	== pBtn )	eOption = VOPT_HELPLINES;
312 	else if ( &aBigHandleCB	 	== pBtn )	eOption = VOPT_BIGHANDLES;
313 	else if ( &aRowColHeaderCB 	== pBtn )	eOption = VOPT_HEADER;
314 
315 	return 0;
316 }
317 /*-----------------11.01.97 13.13-------------------
318 
319 --------------------------------------------------*/
320 
321 void ScTpContentOptions::InitGridOpt()
322 {
323 	sal_Bool bGrid = pLocalOptions->GetOption( VOPT_GRID );
324 
325 	aGridCB.Check( bGrid );
326 
327 	if ( bGrid )
328 		aColorFT.Enable(), aColorLB.Enable();
329 	else
330 		aColorFT.Disable(), aColorLB.Disable();
331 
332 	if ( aColorLB.GetEntryCount() == 0 )
333 	{
334 		SfxObjectShell*	pDocSh = SfxObjectShell::Current();
335 		// hier koennte auch eine andere DocShell kommen!
336 		pDocSh = PTR_CAST(ScDocShell, pDocSh);
337 
338 		XColorListSharedPtr aColorTable;
339 
340 		if ( pDocSh  )
341 		{
342             const SfxPoolItem* pItem = pDocSh->GetItem( SID_COLOR_TABLE );
343 
344 			if ( pItem )
345 				aColorTable = static_cast< const SvxColorTableItem* >(pItem)->GetColorTable();
346 		}
347 		else
348 			aColorTable = XColorList::GetStdColorList();
349 
350 		if ( !aColorTable.get() )
351 			return;
352 
353 		//------------------------------------------------------
354 
355 		aColorLB.SetUpdateMode( sal_False );
356 
357 		//	Eintraege aus der Colortable
358 
359 		long nCount = aColorTable->Count();
360 		for ( long n=0; n<nCount; n++ )
361 		{
362 			XColorEntry* pEntry = aColorTable->GetColor(n);
363 			aColorLB.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
364 		}
365 
366 		//	Standard-Gitterfarbe
367 
368 		Color aStdCol( SC_STD_GRIDCOLOR );			// wie Default in ScViewOptions
369 		if ( LISTBOX_ENTRY_NOTFOUND ==
370 				aColorLB.GetEntryPos( aStdCol ) )
371 			aColorLB.InsertEntry( aStdCol, ScGlobal::GetRscString( STR_GRIDCOLOR ) );
372 
373 		aColorLB.SetUpdateMode( sal_True );
374 
375 		Invalidate();
376 	}
377 
378 	//	#79720# also select grid color entry on subsequent calls
379 
380 	String	aName;
381 	Color	aCol	= pLocalOptions->GetGridColor( &aName );
382 	sal_uInt16	nSelPos	= aColorLB.GetEntryPos( aCol );
383 
384 	if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
385 		aColorLB.SelectEntryPos( nSelPos );
386 	else
387 		aColorLB.SelectEntryPos( aColorLB.InsertEntry( aCol, aName ) );
388 }
389 /*-----------------11.01.97 13.40-------------------
390 
391 --------------------------------------------------*/
392 
393 IMPL_LINK( ScTpContentOptions, GridHdl, CheckBox*, pBox )
394 {
395 	sal_Bool bChecked = pBox->IsChecked();
396 	aColorFT.Enable(bChecked);
397 	aColorLB.Enable(bChecked);
398 	pLocalOptions->SetOption( VOPT_GRID, bChecked );
399 	return 0;
400 }
401 /*-----------------11.01.97 10.53-------------------
402 
403 --------------------------------------------------*/
404 
405 ScTpLayoutOptions::ScTpLayoutOptions( 	Window*	pParent,
406 										const SfxItemSet&	rArgSet ) :
407 	SfxTabPage(pParent, ScResId( RID_SCPAGE_LAYOUT ), rArgSet),
408     aUnitGB( this,          ScResId(GB_UNIT           )),
409     aUnitFT( this,          ScResId(FT_UNIT           )),
410     aUnitLB( this,          ScResId(LB_UNIT           )),
411     aTabFT( this,           ScResId( FT_TAB           )),
412     aTabMF( this,           ScResId( MF_TAB           )),
413     aSeparatorFL( this,     ScResId( FL_SEPARATOR         )),
414 	aLinkGB		(this, ScResId(GB_LINK	)),
415     aLinkFT(this, ScResId(FT_UPDATE_LINKS )),
416 	aAlwaysRB	(this, ScResId(RB_ALWAYS	)),
417 	aRequestRB	(this, ScResId(RB_REQUEST	)),
418 	aNeverRB	(this, ScResId(RB_NEVER	)),
419 
420     aOptionsGB( this,       ScResId( GB_OPTIONS   )),
421 	aAlignCB  ( this, 		ScResId( CB_ALIGN		)),
422 	aAlignLB  ( this, 		ScResId( LB_ALIGN		)),
423 	aEditModeCB( this, 		ScResId( CB_EDITMODE	)),
424 	aFormatCB( this, 		ScResId( CB_FORMAT	)),
425     aExpRefCB( this,        ScResId( CB_EXPREF    )),
426     aMarkHdrCB( this,       ScResId( CB_MARKHDR   )),
427 	aTextFmtCB( this,       ScResId( CB_TEXTFMT   )),
428     aReplWarnCB( this,      ScResId( CB_REPLWARN  )),
429     aUnitArr(               ScResId(ST_UNIT           )),
430     pDoc(NULL)
431 {
432 	FreeResource();
433     aSeparatorFL.SetStyle( aSeparatorFL.GetStyle() | WB_VERT );
434     SetExchangeSupport();
435 
436     aUnitLB.    SetSelectHdl( LINK( this, ScTpLayoutOptions, MetricHdl ) );
437 
438     aAlignCB.SetClickHdl(LINK(this, ScTpLayoutOptions, AlignHdl));
439 
440 
441 	for ( sal_uInt16 i = 0; i < aUnitArr.Count(); ++i )
442 	{
443 		String sMetric = aUnitArr.GetStringByPos( i );
444 		FieldUnit eFUnit = (FieldUnit)aUnitArr.GetValue( i );
445 
446 		switch ( eFUnit )
447 		{
448 			case FUNIT_MM:
449 			case FUNIT_CM:
450 			case FUNIT_POINT:
451 			case FUNIT_PICA:
452 			case FUNIT_INCH:
453 			{
454 				// nur diese Metriken benutzen
455 				sal_uInt16 nPos = aUnitLB.InsertEntry( sMetric );
456 				aUnitLB.SetEntryData( nPos, (void*)(long)eFUnit );
457 			}
458             break;
459             default:
460             {
461                 // added to avoid warnings
462             }
463 		}
464 	}
465 
466 }
467 /*-----------------11.01.97 10.53-------------------
468 
469 --------------------------------------------------*/
470 
471 ScTpLayoutOptions::~ScTpLayoutOptions()
472 {
473 }
474 /*-----------------11.01.97 10.53-------------------
475 
476 --------------------------------------------------*/
477 
478 SfxTabPage*	ScTpLayoutOptions::Create( Window*			pParent,
479 									const SfxItemSet&	rCoreSet )
480 {
481     ScTpLayoutOptions* pNew = new ScTpLayoutOptions(pParent, rCoreSet);
482     ScDocShell* pDocSh = PTR_CAST(ScDocShell,SfxObjectShell::Current());
483 
484 	if(pDocSh!=NULL)
485 		pNew->SetDocument(pDocSh->GetDocument());
486     return pNew;
487 }
488 /*-----------------11.01.97 10.53-------------------
489 
490 --------------------------------------------------*/
491 
492 sal_Bool	ScTpLayoutOptions::FillItemSet( SfxItemSet& rCoreSet )
493 {
494 	sal_Bool bRet = sal_True;
495     const sal_uInt16 nMPos = aUnitLB.GetSelectEntryPos();
496 	if ( nMPos != aUnitLB.GetSavedValue() )
497 	{
498 		sal_uInt16 nFieldUnit = (sal_uInt16)(long)aUnitLB.GetEntryData( nMPos );
499 		rCoreSet.Put( SfxUInt16Item( SID_ATTR_METRIC,
500 									 (sal_uInt16)nFieldUnit ) );
501 		bRet = sal_True;
502 	}
503 
504 	if(aTabMF.GetText() != aTabMF.GetSavedValue())
505 	{
506 		rCoreSet.Put(SfxUInt16Item(SID_ATTR_DEFTABSTOP,
507                     sal::static_int_cast<sal_uInt16>( aTabMF.Denormalize(aTabMF.GetValue(FUNIT_TWIP)) )));
508 		bRet = sal_True;
509 	}
510 
511     ScLkUpdMode nSet=LM_ALWAYS;
512 
513 	if(aRequestRB.IsChecked())
514 	{
515 		nSet=LM_ON_DEMAND;
516 	}
517 	else if(aNeverRB.IsChecked())
518 	{
519 		nSet=LM_NEVER;
520 	}
521 
522     if(aRequestRB.IsChecked() != aRequestRB.GetSavedValue() ||
523             aNeverRB.IsChecked() != aNeverRB.GetSavedValue() )
524 	{
525         if(pDoc)
526             pDoc->SetLinkMode(nSet);
527         ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
528 		aAppOptions.SetLinkMode(nSet );
529 		SC_MOD()->SetAppOptions(aAppOptions);
530         bRet = sal_True;
531     }
532     if(aAlignCB.GetSavedValue() != aAlignCB.IsChecked())
533     {
534 		rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_SELECTION, aAlignCB.IsChecked()));
535         bRet = sal_True;
536     }
537 
538 	if(aAlignLB.GetSavedValue() != aAlignLB.GetSelectEntryPos())
539     {
540         rCoreSet.Put(SfxUInt16Item(SID_SC_INPUT_SELECTIONPOS, aAlignLB.GetSelectEntryPos()));
541         bRet = sal_True;
542     }
543 
544 	if(aEditModeCB.GetSavedValue() != aEditModeCB.IsChecked())
545     {
546         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_EDITMODE, aEditModeCB.IsChecked()));
547         bRet = sal_True;
548     }
549 
550 	if(aFormatCB.GetSavedValue() != aFormatCB.IsChecked())
551     {
552         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_FMT_EXPAND, aFormatCB.IsChecked()));
553         bRet = sal_True;
554     }
555 
556 
557     if(aExpRefCB.GetSavedValue() != aExpRefCB.IsChecked())
558     {
559         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_REF_EXPAND, aExpRefCB.IsChecked()));
560         bRet = sal_True;
561     }
562 
563 	if(aMarkHdrCB.GetSavedValue() != aMarkHdrCB.IsChecked())
564     {
565         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_MARK_HEADER, aMarkHdrCB.IsChecked()));
566         bRet = sal_True;
567     }
568 
569 	if(aTextFmtCB.GetSavedValue() != aTextFmtCB.IsChecked())
570     {
571         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_TEXTWYSIWYG, aTextFmtCB.IsChecked()));
572         bRet = sal_True;
573     }
574 
575     if( aReplWarnCB.GetSavedValue() != aReplWarnCB.IsChecked() )
576     {
577         rCoreSet.Put( SfxBoolItem( SID_SC_INPUT_REPLCELLSWARN, aReplWarnCB.IsChecked() ) );
578         bRet = sal_True;
579     }
580 
581     return bRet;
582 }
583 /*-----------------11.01.97 10.53-------------------
584 
585 --------------------------------------------------*/
586 
587 void	ScTpLayoutOptions::Reset( const SfxItemSet& rCoreSet )
588 {
589 	aUnitLB.SetNoSelection();
590 	if ( rCoreSet.GetItemState( SID_ATTR_METRIC ) >= SFX_ITEM_AVAILABLE )
591 	{
592 		const SfxUInt16Item& rItem = (SfxUInt16Item&)rCoreSet.Get( SID_ATTR_METRIC );
593 		FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
594 
595 		for ( sal_uInt16 i = 0; i < aUnitLB.GetEntryCount(); ++i )
596 		{
597 			if ( (FieldUnit)(long)aUnitLB.GetEntryData( i ) == eFieldUnit )
598 			{
599 				aUnitLB.SelectEntryPos( i );
600 				break;
601 			}
602 		}
603 		::SetFieldUnit(aTabMF, eFieldUnit);
604 	}
605 	aUnitLB.SaveValue();
606 
607     const SfxPoolItem* pItem;
608     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_ATTR_DEFTABSTOP, sal_False, &pItem))
609 		aTabMF.SetValue(aTabMF.Normalize(((SfxUInt16Item*)pItem)->GetValue()), FUNIT_TWIP);
610 	aTabMF.SaveValue();
611 
612     aUnitLB         .SaveValue();
613 	aTabMF			.SaveValue();
614 
615     ScLkUpdMode nSet=LM_UNKNOWN;
616 
617 	if(pDoc!=NULL)
618 	{
619 		nSet=pDoc->GetLinkMode();
620 	}
621 
622 	if(nSet==LM_UNKNOWN)
623 	{
624 		ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
625 		nSet=aAppOptions.GetLinkMode();
626 	}
627 
628 	switch(nSet)
629 	{
630 		case LM_ALWAYS:		aAlwaysRB.	Check();	break;
631 		case LM_NEVER:		aNeverRB.	Check();	break;
632 		case LM_ON_DEMAND:	aRequestRB.	Check();	break;
633         default:
634         {
635             // added to avoid warnings
636         }
637 	}
638     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_SELECTION, sal_False, &pItem))
639 		aAlignCB.Check(((const SfxBoolItem*)pItem)->GetValue());
640 
641 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_SELECTIONPOS, sal_False, &pItem))
642 		aAlignLB.SelectEntryPos(((const SfxUInt16Item*)pItem)->GetValue());
643 
644 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_EDITMODE, sal_False, &pItem))
645 		aEditModeCB.Check(((const SfxBoolItem*)pItem)->GetValue());
646 
647 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_FMT_EXPAND, sal_False, &pItem))
648 		aFormatCB.Check(((const SfxBoolItem*)pItem)->GetValue());
649 
650 
651     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_REF_EXPAND, sal_False, &pItem))
652 		aExpRefCB.Check(((const SfxBoolItem*)pItem)->GetValue());
653 
654 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_MARK_HEADER, sal_False, &pItem))
655 		aMarkHdrCB.Check(((const SfxBoolItem*)pItem)->GetValue());
656 
657 	if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_TEXTWYSIWYG, sal_False, &pItem))
658 		aTextFmtCB.Check(((const SfxBoolItem*)pItem)->GetValue());
659 
660     if( SFX_ITEM_SET == rCoreSet.GetItemState( SID_SC_INPUT_REPLCELLSWARN, sal_False, &pItem ) )
661         aReplWarnCB.Check( ( (const SfxBoolItem*)pItem)->GetValue() );
662 
663     aAlignCB    .SaveValue();
664 	aAlignLB  	.SaveValue();
665 	aEditModeCB	.SaveValue();
666 	aFormatCB	.SaveValue();
667 
668     aExpRefCB   .SaveValue();
669 	aMarkHdrCB	.SaveValue();
670 	aTextFmtCB	.SaveValue();
671     aReplWarnCB .SaveValue();
672 	AlignHdl(&aAlignCB);
673 
674     aAlwaysRB.SaveValue();
675     aNeverRB.SaveValue();
676     aRequestRB.SaveValue();
677 }
678 
679 /*-----------------11.01.97 12.46-------------------
680 
681 --------------------------------------------------*/
682 
683 void	ScTpLayoutOptions::ActivatePage( const SfxItemSet& /* rCoreSet */ )
684 {
685 }
686 /*-----------------11.01.97 12.46-------------------
687 
688 --------------------------------------------------*/
689 
690 int	ScTpLayoutOptions::DeactivatePage( SfxItemSet* pSetP )
691 {
692     if(pSetP)
693         FillItemSet(*pSetP);
694 	return SfxTabPage::LEAVE_PAGE;
695 }
696 
697 
698 /*-----------------13.01.97 14.44-------------------
699 	Metric des Deftabstops umschalten
700 --------------------------------------------------*/
701 
702 IMPL_LINK(ScTpLayoutOptions, MetricHdl, ListBox*, EMPTYARG)
703 {
704 	const sal_uInt16 nMPos = aUnitLB.GetSelectEntryPos();
705 	if(nMPos != USHRT_MAX)
706 	{
707 		FieldUnit eFieldUnit = (FieldUnit)(long)aUnitLB.GetEntryData( nMPos );
708         sal_Int64 nVal =
709 			aTabMF.Denormalize( aTabMF.GetValue( FUNIT_TWIP ) );
710 		::SetFieldUnit( aTabMF, eFieldUnit );
711 		aTabMF.SetValue( aTabMF.Normalize( nVal ), FUNIT_TWIP );
712 	}
713 
714 	return 0;
715 }
716 /*-----------------11.01.97 15.30-------------------
717 
718 --------------------------------------------------*/
719 IMPL_LINK( ScTpLayoutOptions, AlignHdl, CheckBox*, pBox )
720 {
721 	aAlignLB.Enable(pBox->IsChecked());
722 	return 0;
723 }
724