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