xref: /trunk/main/sc/source/ui/optdlg/tpview.cxx (revision 033ed79537b07af43f0f091b11f5dc308cb4c9ad)
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     pLocalOptions->SetOption( eOption, bChecked );
316 
317     return 0;
318 }
319 /*-----------------11.01.97 13.13-------------------
320 
321 --------------------------------------------------*/
322 
323 void ScTpContentOptions::InitGridOpt()
324 {
325     sal_Bool bGrid = pLocalOptions->GetOption( VOPT_GRID );
326 
327     aGridCB.Check( bGrid );
328 
329     if ( bGrid )
330         aColorFT.Enable(), aColorLB.Enable();
331     else
332         aColorFT.Disable(), aColorLB.Disable();
333 
334     if ( aColorLB.GetEntryCount() == 0 )
335     {
336         SfxObjectShell* pDocSh = SfxObjectShell::Current();
337         // hier koennte auch eine andere DocShell kommen!
338         pDocSh = PTR_CAST(ScDocShell, pDocSh);
339 
340         XColorListSharedPtr aColorTable;
341 
342         if ( pDocSh  )
343         {
344             const SfxPoolItem* pItem = pDocSh->GetItem( SID_COLOR_TABLE );
345 
346             if ( pItem )
347                 aColorTable = static_cast< const SvxColorTableItem* >(pItem)->GetColorTable();
348         }
349         else
350             aColorTable = XColorList::GetStdColorList();
351 
352         if ( !aColorTable.get() )
353             return;
354 
355         //------------------------------------------------------
356 
357         aColorLB.SetUpdateMode( sal_False );
358 
359         //  Eintraege aus der Colortable
360 
361         long nCount = aColorTable->Count();
362         for ( long n=0; n<nCount; n++ )
363         {
364             XColorEntry* pEntry = aColorTable->GetColor(n);
365             aColorLB.InsertEntry( pEntry->GetColor(), pEntry->GetName() );
366         }
367 
368         //  Standard-Gitterfarbe
369 
370         Color aStdCol( SC_STD_GRIDCOLOR );          // wie Default in ScViewOptions
371         if ( LISTBOX_ENTRY_NOTFOUND ==
372                 aColorLB.GetEntryPos( aStdCol ) )
373             aColorLB.InsertEntry( aStdCol, ScGlobal::GetRscString( STR_GRIDCOLOR ) );
374 
375         aColorLB.SetUpdateMode( sal_True );
376 
377         Invalidate();
378     }
379 
380     //  #79720# also select grid color entry on subsequent calls
381 
382     String  aName;
383     Color   aCol    = pLocalOptions->GetGridColor( &aName );
384     sal_uInt16  nSelPos = aColorLB.GetEntryPos( aCol );
385 
386     if ( LISTBOX_ENTRY_NOTFOUND != nSelPos )
387         aColorLB.SelectEntryPos( nSelPos );
388     else
389         aColorLB.SelectEntryPos( aColorLB.InsertEntry( aCol, aName ) );
390 }
391 /*-----------------11.01.97 13.40-------------------
392 
393 --------------------------------------------------*/
394 
395 IMPL_LINK( ScTpContentOptions, GridHdl, CheckBox*, pBox )
396 {
397     sal_Bool bChecked = pBox->IsChecked();
398     aColorFT.Enable(bChecked);
399     aColorLB.Enable(bChecked);
400     pLocalOptions->SetOption( VOPT_GRID, bChecked );
401     return 0;
402 }
403 /*-----------------11.01.97 10.53-------------------
404 
405 --------------------------------------------------*/
406 
407 ScTpLayoutOptions::ScTpLayoutOptions(   Window* pParent,
408                                         const SfxItemSet&   rArgSet ) :
409     SfxTabPage(pParent, ScResId( RID_SCPAGE_LAYOUT ), rArgSet),
410     aUnitGB( this,          ScResId(GB_UNIT           )),
411     aUnitFT( this,          ScResId(FT_UNIT           )),
412     aUnitLB( this,          ScResId(LB_UNIT           )),
413     aTabFT( this,           ScResId( FT_TAB           )),
414     aTabMF( this,           ScResId( MF_TAB           )),
415     aSeparatorFL( this,     ScResId( FL_SEPARATOR         )),
416     aLinkGB     (this, ScResId(GB_LINK  )),
417     aLinkFT(this, ScResId(FT_UPDATE_LINKS )),
418     aAlwaysRB   (this, ScResId(RB_ALWAYS    )),
419     aRequestRB  (this, ScResId(RB_REQUEST   )),
420     aNeverRB    (this, ScResId(RB_NEVER )),
421 
422     aOptionsGB( this,       ScResId( GB_OPTIONS   )),
423     aAlignCB  ( this,       ScResId( CB_ALIGN       )),
424     aAlignLB  ( this,       ScResId( LB_ALIGN       )),
425     aEditModeCB( this,      ScResId( CB_EDITMODE    )),
426     aFormatCB( this,        ScResId( CB_FORMAT  )),
427     aExpRefCB( this,        ScResId( CB_EXPREF    )),
428     aMarkHdrCB( this,       ScResId( CB_MARKHDR   )),
429     aTextFmtCB( this,       ScResId( CB_TEXTFMT   )),
430     aReplWarnCB( this,      ScResId( CB_REPLWARN  )),
431     aUnitArr(               ScResId(ST_UNIT           )),
432     pDoc(NULL)
433 {
434     FreeResource();
435     aSeparatorFL.SetStyle( aSeparatorFL.GetStyle() | WB_VERT );
436     SetExchangeSupport();
437 
438     aUnitLB.    SetSelectHdl( LINK( this, ScTpLayoutOptions, MetricHdl ) );
439 
440     aAlignCB.SetClickHdl(LINK(this, ScTpLayoutOptions, AlignHdl));
441 
442 
443     for ( sal_uInt16 i = 0; i < aUnitArr.Count(); ++i )
444     {
445         String sMetric = aUnitArr.GetStringByPos( i );
446         FieldUnit eFUnit = (FieldUnit)aUnitArr.GetValue( i );
447 
448         switch ( eFUnit )
449         {
450             case FUNIT_MM:
451             case FUNIT_CM:
452             case FUNIT_POINT:
453             case FUNIT_PICA:
454             case FUNIT_INCH:
455             {
456                 // nur diese Metriken benutzen
457                 sal_uInt16 nPos = aUnitLB.InsertEntry( sMetric );
458                 aUnitLB.SetEntryData( nPos, (void*)(long)eFUnit );
459             }
460             break;
461             default:
462             {
463                 // added to avoid warnings
464             }
465         }
466     }
467 
468 }
469 /*-----------------11.01.97 10.53-------------------
470 
471 --------------------------------------------------*/
472 
473 ScTpLayoutOptions::~ScTpLayoutOptions()
474 {
475 }
476 /*-----------------11.01.97 10.53-------------------
477 
478 --------------------------------------------------*/
479 
480 SfxTabPage* ScTpLayoutOptions::Create( Window*          pParent,
481                                     const SfxItemSet&   rCoreSet )
482 {
483     ScTpLayoutOptions* pNew = new ScTpLayoutOptions(pParent, rCoreSet);
484     ScDocShell* pDocSh = PTR_CAST(ScDocShell,SfxObjectShell::Current());
485 
486     if(pDocSh!=NULL)
487         pNew->SetDocument(pDocSh->GetDocument());
488     return pNew;
489 }
490 /*-----------------11.01.97 10.53-------------------
491 
492 --------------------------------------------------*/
493 
494 sal_Bool    ScTpLayoutOptions::FillItemSet( SfxItemSet& rCoreSet )
495 {
496     sal_Bool bRet = sal_True;
497     const sal_uInt16 nMPos = aUnitLB.GetSelectEntryPos();
498     if ( nMPos != aUnitLB.GetSavedValue() )
499     {
500         sal_uInt16 nFieldUnit = (sal_uInt16)(long)aUnitLB.GetEntryData( nMPos );
501         rCoreSet.Put( SfxUInt16Item( SID_ATTR_METRIC,
502                                      (sal_uInt16)nFieldUnit ) );
503         bRet = sal_True;
504     }
505 
506     if(aTabMF.GetText() != aTabMF.GetSavedValue())
507     {
508         rCoreSet.Put(SfxUInt16Item(SID_ATTR_DEFTABSTOP,
509                     sal::static_int_cast<sal_uInt16>( aTabMF.Denormalize(aTabMF.GetValue(FUNIT_TWIP)) )));
510         bRet = sal_True;
511     }
512 
513     ScLkUpdMode nSet=LM_ALWAYS;
514 
515     if(aRequestRB.IsChecked())
516     {
517         nSet=LM_ON_DEMAND;
518     }
519     else if(aNeverRB.IsChecked())
520     {
521         nSet=LM_NEVER;
522     }
523 
524     if(aRequestRB.IsChecked() != aRequestRB.GetSavedValue() ||
525             aNeverRB.IsChecked() != aNeverRB.GetSavedValue() )
526     {
527         if(pDoc)
528             pDoc->SetLinkMode(nSet);
529         ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
530         aAppOptions.SetLinkMode(nSet );
531         SC_MOD()->SetAppOptions(aAppOptions);
532         bRet = sal_True;
533     }
534     if(aAlignCB.GetSavedValue() != aAlignCB.IsChecked())
535     {
536         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_SELECTION, aAlignCB.IsChecked()));
537         bRet = sal_True;
538     }
539 
540     if(aAlignLB.GetSavedValue() != aAlignLB.GetSelectEntryPos())
541     {
542         rCoreSet.Put(SfxUInt16Item(SID_SC_INPUT_SELECTIONPOS, aAlignLB.GetSelectEntryPos()));
543         bRet = sal_True;
544     }
545 
546     if(aEditModeCB.GetSavedValue() != aEditModeCB.IsChecked())
547     {
548         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_EDITMODE, aEditModeCB.IsChecked()));
549         bRet = sal_True;
550     }
551 
552     if(aFormatCB.GetSavedValue() != aFormatCB.IsChecked())
553     {
554         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_FMT_EXPAND, aFormatCB.IsChecked()));
555         bRet = sal_True;
556     }
557 
558 
559     if(aExpRefCB.GetSavedValue() != aExpRefCB.IsChecked())
560     {
561         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_REF_EXPAND, aExpRefCB.IsChecked()));
562         bRet = sal_True;
563     }
564 
565     if(aMarkHdrCB.GetSavedValue() != aMarkHdrCB.IsChecked())
566     {
567         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_MARK_HEADER, aMarkHdrCB.IsChecked()));
568         bRet = sal_True;
569     }
570 
571     if(aTextFmtCB.GetSavedValue() != aTextFmtCB.IsChecked())
572     {
573         rCoreSet.Put(SfxBoolItem(SID_SC_INPUT_TEXTWYSIWYG, aTextFmtCB.IsChecked()));
574         bRet = sal_True;
575     }
576 
577     if( aReplWarnCB.GetSavedValue() != aReplWarnCB.IsChecked() )
578     {
579         rCoreSet.Put( SfxBoolItem( SID_SC_INPUT_REPLCELLSWARN, aReplWarnCB.IsChecked() ) );
580         bRet = sal_True;
581     }
582 
583     return bRet;
584 }
585 /*-----------------11.01.97 10.53-------------------
586 
587 --------------------------------------------------*/
588 
589 void    ScTpLayoutOptions::Reset( const SfxItemSet& rCoreSet )
590 {
591     aUnitLB.SetNoSelection();
592     if ( rCoreSet.GetItemState( SID_ATTR_METRIC ) >= SFX_ITEM_AVAILABLE )
593     {
594         const SfxUInt16Item& rItem = (SfxUInt16Item&)rCoreSet.Get( SID_ATTR_METRIC );
595         FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
596 
597         for ( sal_uInt16 i = 0; i < aUnitLB.GetEntryCount(); ++i )
598         {
599             if ( (FieldUnit)(long)aUnitLB.GetEntryData( i ) == eFieldUnit )
600             {
601                 aUnitLB.SelectEntryPos( i );
602                 break;
603             }
604         }
605         ::SetFieldUnit(aTabMF, eFieldUnit);
606     }
607     aUnitLB.SaveValue();
608 
609     const SfxPoolItem* pItem;
610     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_ATTR_DEFTABSTOP, sal_False, &pItem))
611         aTabMF.SetValue(aTabMF.Normalize(((SfxUInt16Item*)pItem)->GetValue()), FUNIT_TWIP);
612     aTabMF.SaveValue();
613 
614     aUnitLB         .SaveValue();
615     aTabMF          .SaveValue();
616 
617     ScLkUpdMode nSet=LM_UNKNOWN;
618 
619     if(pDoc!=NULL)
620     {
621         nSet=pDoc->GetLinkMode();
622     }
623 
624     if(nSet==LM_UNKNOWN)
625     {
626         ScAppOptions aAppOptions=SC_MOD()->GetAppOptions();
627         nSet=aAppOptions.GetLinkMode();
628     }
629 
630     switch(nSet)
631     {
632         case LM_ALWAYS:     aAlwaysRB.  Check();    break;
633         case LM_NEVER:      aNeverRB.   Check();    break;
634         case LM_ON_DEMAND:  aRequestRB. Check();    break;
635         default:
636         {
637             // added to avoid warnings
638         }
639     }
640     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_SELECTION, sal_False, &pItem))
641         aAlignCB.Check(((const SfxBoolItem*)pItem)->GetValue());
642 
643     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_SELECTIONPOS, sal_False, &pItem))
644         aAlignLB.SelectEntryPos(((const SfxUInt16Item*)pItem)->GetValue());
645 
646     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_EDITMODE, sal_False, &pItem))
647         aEditModeCB.Check(((const SfxBoolItem*)pItem)->GetValue());
648 
649     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_FMT_EXPAND, sal_False, &pItem))
650         aFormatCB.Check(((const SfxBoolItem*)pItem)->GetValue());
651 
652 
653     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_REF_EXPAND, sal_False, &pItem))
654         aExpRefCB.Check(((const SfxBoolItem*)pItem)->GetValue());
655 
656     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_MARK_HEADER, sal_False, &pItem))
657         aMarkHdrCB.Check(((const SfxBoolItem*)pItem)->GetValue());
658 
659     if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_SC_INPUT_TEXTWYSIWYG, sal_False, &pItem))
660         aTextFmtCB.Check(((const SfxBoolItem*)pItem)->GetValue());
661 
662     if( SFX_ITEM_SET == rCoreSet.GetItemState( SID_SC_INPUT_REPLCELLSWARN, sal_False, &pItem ) )
663         aReplWarnCB.Check( ( (const SfxBoolItem*)pItem)->GetValue() );
664 
665     aAlignCB    .SaveValue();
666     aAlignLB    .SaveValue();
667     aEditModeCB .SaveValue();
668     aFormatCB   .SaveValue();
669 
670     aExpRefCB   .SaveValue();
671     aMarkHdrCB  .SaveValue();
672     aTextFmtCB  .SaveValue();
673     aReplWarnCB .SaveValue();
674     AlignHdl(&aAlignCB);
675 
676     aAlwaysRB.SaveValue();
677     aNeverRB.SaveValue();
678     aRequestRB.SaveValue();
679 }
680 
681 /*-----------------11.01.97 12.46-------------------
682 
683 --------------------------------------------------*/
684 
685 void    ScTpLayoutOptions::ActivatePage( const SfxItemSet& /* rCoreSet */ )
686 {
687 }
688 /*-----------------11.01.97 12.46-------------------
689 
690 --------------------------------------------------*/
691 
692 int ScTpLayoutOptions::DeactivatePage( SfxItemSet* pSetP )
693 {
694     if(pSetP)
695         FillItemSet(*pSetP);
696     return SfxTabPage::LEAVE_PAGE;
697 }
698 
699 
700 /*-----------------13.01.97 14.44-------------------
701     Metric des Deftabstops umschalten
702 --------------------------------------------------*/
703 
704 IMPL_LINK(ScTpLayoutOptions, MetricHdl, ListBox*, EMPTYARG)
705 {
706     const sal_uInt16 nMPos = aUnitLB.GetSelectEntryPos();
707     if(nMPos != USHRT_MAX)
708     {
709         FieldUnit eFieldUnit = (FieldUnit)(long)aUnitLB.GetEntryData( nMPos );
710         sal_Int64 nVal =
711             aTabMF.Denormalize( aTabMF.GetValue( FUNIT_TWIP ) );
712         ::SetFieldUnit( aTabMF, eFieldUnit );
713         aTabMF.SetValue( aTabMF.Normalize( nVal ), FUNIT_TWIP );
714     }
715 
716     return 0;
717 }
718 /*-----------------11.01.97 15.30-------------------
719 
720 --------------------------------------------------*/
721 IMPL_LINK( ScTpLayoutOptions, AlignHdl, CheckBox*, pBox )
722 {
723     aAlignLB.Enable(pBox->IsChecked());
724     return 0;
725 }
726