xref: /aoo42x/main/sw/source/ui/app/appopt.cxx (revision efeef26f)
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_sw.hxx"
26 
27 #define _SVSTDARR_STRINGSDTOR
28 #include <svl/svstdarr.hxx>
29 
30 #include <com/sun/star/i18n/ScriptType.hpp>
31 
32 #include <hintids.hxx>
33 #include <cmdid.h>		  	// Funktion-Ids
34 #include <vcl/msgbox.hxx>
35 #include <svl/eitem.hxx>
36 #include <sfx2/request.hxx>
37 #include <sfx2/app.hxx>
38 #include <sfx2/printer.hxx>
39 #include <svx/htmlmode.hxx>
40 #include <sfx2/bindings.hxx>
41 #include <editeng/brshitem.hxx>
42 #include <editeng/tstpitem.hxx>
43 #include <svx/optgrid.hxx>
44 #include <svx/svxdlg.hxx>
45 #include <svx/dialogs.hrc>
46 #include <i18npool/mslangid.hxx>
47 #include <fontcfg.hxx>
48 #include <optload.hxx>
49 #include <optcomp.hxx>
50 #include <edtwin.hxx>
51 #include <swmodule.hxx>
52 #include <view.hxx>
53 #include <doc.hxx>
54 #include <wrtsh.hxx>
55 #include <IDocumentDeviceAccess.hxx>
56 #include <uitool.hxx>
57 #include <initui.hxx>					// fuer ::GetGlossaries()
58 #include <fldbas.hxx>	   //fuer UpdateFields
59 #include <wview.hxx>
60 #include <cfgitems.hxx>
61 #include <prtopt.hxx>
62 #include <pview.hxx>
63 #include <usrpref.hxx>
64 #include <modcfg.hxx>
65 #include <glosdoc.hxx>
66 #include <uiitems.hxx>
67 #include <editeng/langitem.hxx>
68 #include <unotools/lingucfg.hxx>
69 #include <editeng/unolingu.hxx>
70 #include <globals.hrc>
71 #include <globals.h>		// globale Konstanten z.B.
72 #include <svl/slstitm.hxx>
73 #include "swabstdlg.hxx"
74 #include <swwrtshitem.hxx>
75 
76 #include <unomid.h>
77 
78 using namespace ::com::sun::star::uno;
79 using namespace ::com::sun::star::lang;
80 
81 /* -----------------12.02.99 12:28-------------------
82  *
83  * --------------------------------------------------*/
84 
85 SfxItemSet*	 SwModule::CreateItemSet( sal_uInt16 nId )
86 {
87 	sal_Bool bTextDialog = (nId == SID_SW_EDITOPTIONS) ? sal_True : sal_False;
88 
89 	// hier werden die Optionen fuer die Web- und den Textdialog zusmmengesetzt
90 		SwViewOption aViewOpt = *GetUsrPref(!bTextDialog);
91 		SwMasterUsrPref* pPref = bTextDialog ? pUsrPref : pWebUsrPref;
92 		//kein MakeUsrPref, da hier nur die Optionen von Textdoks genommen werden duerfen
93 		SwView* pAppView = GetView();
94         if(pAppView && pAppView->GetViewFrame() != SfxViewFrame::Current())
95             pAppView = 0;
96 		if(pAppView)
97 		{
98 		// wenn Text dann nicht WebView und umgekehrt
99 			sal_Bool bWebView = 0 != PTR_CAST(SwWebView, pAppView);
100 			if( (bWebView &&  !bTextDialog) ||(!bWebView &&  bTextDialog))
101 			{
102 				aViewOpt = *pAppView->GetWrtShell().GetViewOptions();
103             }
104 			else
105 				pAppView = 0; // mit View kann hier nichts gewonnen werden
106 		}
107 
108 	/********************************************************************/
109 	/*																	*/
110 	/* Optionen/Bearbeiten  											*/
111 	/*																	*/
112 	/********************************************************************/
113 	SfxItemSet*	pRet = new SfxItemSet (GetPool(),	FN_PARAM_DOCDISP,		FN_PARAM_ELEM,
114 									SID_PRINTPREVIEW, 		SID_PRINTPREVIEW,
115 									SID_ATTR_GRID_OPTIONS, 	SID_ATTR_GRID_OPTIONS,
116 									FN_PARAM_PRINTER, 		FN_PARAM_STDFONTS,
117 									FN_PARAM_WRTSHELL,		FN_PARAM_WRTSHELL,
118 									FN_PARAM_ADDPRINTER, 	FN_PARAM_ADDPRINTER,
119 									SID_ATTR_METRIC,		SID_ATTR_METRIC,
120 									SID_ATTR_DEFTABSTOP, 	SID_ATTR_DEFTABSTOP,
121 									RES_BACKGROUND,			RES_BACKGROUND,
122 									SID_HTML_MODE,			SID_HTML_MODE,
123 									FN_PARAM_SHADOWCURSOR,	FN_PARAM_SHADOWCURSOR,
124 									FN_PARAM_CRSR_IN_PROTECTED, FN_PARAM_CRSR_IN_PROTECTED,
125                                     FN_HSCROLL_METRIC,      FN_VSCROLL_METRIC,
126                                     SID_ATTR_LANGUAGE,      SID_ATTR_LANGUAGE,
127                                     SID_ATTR_CHAR_CJK_LANGUAGE,   SID_ATTR_CHAR_CJK_LANGUAGE,
128                                     SID_ATTR_CHAR_CTL_LANGUAGE, SID_ATTR_CHAR_CTL_LANGUAGE,
129 #ifdef DBG_UTIL
130 									FN_PARAM_SWTEST,		FN_PARAM_SWTEST,
131 #endif
132                                     0);
133 
134     pRet->Put( SwDocDisplayItem( aViewOpt, FN_PARAM_DOCDISP) );
135 	pRet->Put( SwElemItem( aViewOpt, FN_PARAM_ELEM) );
136 	if( bTextDialog )
137 	{
138 		pRet->Put( SwShadowCursorItem( aViewOpt, FN_PARAM_SHADOWCURSOR ));
139 		pRet->Put( SfxBoolItem(FN_PARAM_CRSR_IN_PROTECTED, aViewOpt.IsCursorInProtectedArea()));
140 	}
141 
142 	if( pAppView )
143 	{
144 		SwWrtShell& rWrtShell = pAppView->GetWrtShell();
145 
146         SfxPrinter* pPrt = rWrtShell.getIDocumentDeviceAccess()->getPrinter( false );
147 		if( pPrt )
148 			pRet->Put(SwPtrItem(FN_PARAM_PRINTER, pPrt));
149 		pRet->Put(SwPtrItem(FN_PARAM_WRTSHELL, &rWrtShell));
150 
151         pRet->Put((const SvxLanguageItem&)
152             rWrtShell.GetDefault(RES_CHRATR_LANGUAGE), SID_ATTR_LANGUAGE);
153 
154         pRet->Put((const SvxLanguageItem&)
155             rWrtShell.GetDefault(RES_CHRATR_CJK_LANGUAGE), SID_ATTR_CHAR_CJK_LANGUAGE);
156 
157         pRet->Put((const SvxLanguageItem&)
158             rWrtShell.GetDefault(RES_CHRATR_CTL_LANGUAGE), SID_ATTR_CHAR_CTL_LANGUAGE);
159     }
160     else
161     {
162 /* 		Der Drucker wird jetzt von der TabPage erzeugt und auch geloescht
163  * 		SfxItemSet* pSet = new SfxItemSet( SFX_APP()->GetPool(),
164 					SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
165 					SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
166 					0 );
167 
168 		pPrt = new SfxPrinter(pSet);
169 		pRet->Put(SwPtrItem(FN_PARAM_PRINTER, pPrt));*/
170 
171         SvtLinguConfig aLinguCfg;
172         Locale aLocale;
173         LanguageType nLang;
174 
175         using namespace ::com::sun::star::i18n::ScriptType;
176 
177         Any aLang = aLinguCfg.GetProperty(C2U("DefaultLocale"));
178         aLang >>= aLocale;
179         nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage(aLocale), LATIN);
180         pRet->Put(SvxLanguageItem(nLang, SID_ATTR_LANGUAGE));
181 
182         aLang = aLinguCfg.GetProperty(C2U("DefaultLocale_CJK"));
183         aLang >>= aLocale;
184         nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage(aLocale), ASIAN);
185         pRet->Put(SvxLanguageItem(nLang, SID_ATTR_CHAR_CJK_LANGUAGE));
186 
187         aLang = aLinguCfg.GetProperty(C2U("DefaultLocale_CTL"));
188         aLang >>= aLocale;
189         nLang = MsLangId::resolveSystemLanguageByScriptType(MsLangId::convertLocaleToLanguage(aLocale), COMPLEX);
190         pRet->Put(SvxLanguageItem(nLang, SID_ATTR_CHAR_CTL_LANGUAGE));
191     }
192 	if(bTextDialog)
193 		pRet->Put(SwPtrItem(FN_PARAM_STDFONTS, GetStdFontConfig()));
194 	if( PTR_CAST( SwPagePreView, SfxViewShell::Current())!=0)
195 	{
196 		SfxBoolItem aBool(SfxBoolItem(SID_PRINTPREVIEW, sal_True));
197 		pRet->Put(aBool);
198 	}
199 
200     FieldUnit eUnit = pPref->GetHScrollMetric();
201     if(pAppView)
202         pAppView->GetHLinealMetric(eUnit);
203     pRet->Put(SfxUInt16Item( FN_HSCROLL_METRIC, static_cast< sal_uInt16 >(eUnit)));
204 
205     eUnit = pPref->GetVScrollMetric();
206     if(pAppView)
207         pAppView->GetVLinealMetric(eUnit);
208     pRet->Put(SfxUInt16Item( FN_VSCROLL_METRIC, static_cast< sal_uInt16 >(eUnit) ));
209     pRet->Put(SfxUInt16Item( SID_ATTR_METRIC, static_cast< sal_uInt16 >(pPref->GetMetric()) ));
210     if(bTextDialog)
211 	{
212 		if(pAppView)
213 		{
214 			const SvxTabStopItem& rDefTabs =
215 					(const SvxTabStopItem&)pAppView->GetWrtShell().
216 										GetDefault(RES_PARATR_TABSTOP);
217 				pRet->Put( SfxUInt16Item( SID_ATTR_DEFTABSTOP, (sal_uInt16)::GetTabDist(rDefTabs)));
218 		}
219 		else
220 			pRet->Put(SfxUInt16Item( SID_ATTR_DEFTABSTOP, (sal_uInt16)pPref->GetDefTab()));
221 	}
222 
223 	/*-----------------01.02.97 11.13-------------------
224 	Optionen fuer GridTabPage
225 	--------------------------------------------------*/
226 
227 	SvxGridItem aGridItem( SID_ATTR_GRID_OPTIONS);
228 
229 	aGridItem.SetUseGridSnap( aViewOpt.IsSnap());
230 	aGridItem.SetSynchronize( aViewOpt.IsSynchronize());
231 	aGridItem.SetGridVisible( aViewOpt.IsGridVisible());
232 
233 	const Size& rSnapSize = aViewOpt.GetSnapSize();
234 	aGridItem.SetFldDrawX( (sal_uInt16) (rSnapSize.Width() ));
235 	aGridItem.SetFldDrawY( (sal_uInt16) (rSnapSize.Height()));
236 
237 	aGridItem.SetFldDivisionX( aViewOpt.GetDivisionX());
238 	aGridItem.SetFldDivisionY( aViewOpt.GetDivisionY());
239 
240 	pRet->Put(aGridItem);
241 
242 	/*-----------------01.02.97 13.02-------------------
243 		Optionen fuer PrintTabPage
244 	--------------------------------------------------*/
245     const SwPrintData* pOpt = pAppView ?
246                         &pAppView->GetWrtShell().getIDocumentDeviceAccess()->getPrintData() :
247                         0;
248 
249     if(!pOpt)
250         pOpt = GetPrtOptions(!bTextDialog);
251 
252     SwAddPrinterItem aAddPrinterItem (FN_PARAM_ADDPRINTER, *pOpt );
253 	pRet->Put(aAddPrinterItem);
254 
255 	/*-----------------01.02.97 13.12-------------------
256 		Optionen fuer Web-Hintergrund
257 	--------------------------------------------------*/
258 	if(!bTextDialog)
259 	{
260 		pRet->Put(SvxBrushItem(aViewOpt.GetRetoucheColor(), RES_BACKGROUND));
261 	}
262 
263 #ifdef DBG_UTIL
264 	/*-----------------01.02.97 13.02-------------------
265 		Test-Optionen
266 	--------------------------------------------------*/
267 		SwTestItem aTestItem(FN_PARAM_SWTEST);
268 		aTestItem.bTest1 = aViewOpt.IsTest1();
269 		aTestItem.bTest2 = aViewOpt.IsTest2();
270 		aTestItem.bTest3 = aViewOpt.IsTest3();
271 		aTestItem.bTest4 =  aViewOpt.IsTest4();
272 		aTestItem.bTest5 = aViewOpt.IsTest5();
273 		aTestItem.bTest6 = aViewOpt.IsTest6();
274 		aTestItem.bTest7 = aViewOpt.IsTest7();
275 		aTestItem.bTest8 = aViewOpt.IsTest8();
276 		aTestItem.bTest9 = SwViewOption::IsTest9();
277 		aTestItem.bTest10 = aViewOpt.IsTest10();
278 		pRet->Put(aTestItem);
279 #endif
280 	/*-----------------01.02.97 13.04-------------------
281 
282 	--------------------------------------------------*/
283 	if(!bTextDialog)
284 		pRet->Put(SfxUInt16Item(SID_HTML_MODE, HTMLMODE_ON));
285 //	delete pPrt;
286 	return pRet;
287 }
288 /* -----------------12.02.99 12:28-------------------
289  *
290  * --------------------------------------------------*/
291 void SwModule::ApplyItemSet( sal_uInt16 nId, const SfxItemSet& rSet )
292 {
293 	sal_Bool bTextDialog = nId == SID_SW_EDITOPTIONS;
294 	SwView* pAppView = GetView();
295     if(pAppView && pAppView->GetViewFrame() != SfxViewFrame::Current())
296         pAppView = 0;
297     if(pAppView)
298     {
299         // the text dialog mustn't apply data to the web view and vice versa
300         sal_Bool bWebView = 0 != PTR_CAST(SwWebView, pAppView);
301         if( (bWebView == bTextDialog))
302             pAppView = 0; //
303     }
304 
305     SwViewOption aViewOpt = *GetUsrPref(!bTextDialog);
306     SwMasterUsrPref* pPref = bTextDialog ? pUsrPref : pWebUsrPref;
307 
308 	const SfxPoolItem* pItem;
309 	SfxBindings *pBindings = pAppView ? &pAppView->GetViewFrame()->GetBindings()
310 								 : NULL;
311 
312 	/*---------------------------------------------------------------------
313 			Seite Dokumentansicht auswerten
314 	-----------------------------------------------------------------------*/
315 	if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_DOCDISP, sal_False, &pItem ))
316 	{
317 		const SwDocDisplayItem* pDocDispItem = (const SwDocDisplayItem*)pItem;
318 
319 		if(!aViewOpt.IsViewMetaChars())
320 		{
321 			if( 	(!aViewOpt.IsTab( sal_True ) &&  pDocDispItem->bTab) ||
322 					(!aViewOpt.IsBlank( sal_True ) && pDocDispItem->bSpace) ||
323 					(!aViewOpt.IsParagraph( sal_True ) && pDocDispItem->bParagraphEnd) ||
324 					(!aViewOpt.IsLineBreak( sal_True ) && pDocDispItem->bManualBreak) )
325 			{
326 				aViewOpt.SetViewMetaChars(sal_True);
327 				if(pBindings)
328 					pBindings->Invalidate(FN_VIEW_META_CHARS);
329 			}
330 
331 		}
332 		pDocDispItem->FillViewOptions( aViewOpt );
333 		if(pBindings)
334 		{
335 			pBindings->Invalidate(FN_VIEW_GRAPHIC);
336 			pBindings->Invalidate(FN_VIEW_HIDDEN_PARA);
337 		}
338 	}
339 
340 	/*---------------------------------------------------------------------
341 				Elemente - Item auswerten
342 	-----------------------------------------------------------------------*/
343 
344 	if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_ELEM, sal_False, &pItem ) )
345 	{
346 		const SwElemItem* pElemItem = (const SwElemItem*)pItem;
347 		pElemItem->FillViewOptions( aViewOpt );
348 
349 	}
350 
351 	if( SFX_ITEM_SET == rSet.GetItemState(SID_ATTR_METRIC, sal_False, &pItem ) )
352 	{
353 		SFX_APP()->SetOptions(rSet);
354 		const SfxUInt16Item* pMetricItem = (const SfxUInt16Item*)pItem;
355 		::SetDfltMetric((FieldUnit)pMetricItem->GetValue(), !bTextDialog);
356 	}
357     if( SFX_ITEM_SET == rSet.GetItemState(FN_HSCROLL_METRIC, sal_False, &pItem ) )
358 	{
359 		const SfxUInt16Item* pMetricItem = (const SfxUInt16Item*)pItem;
360         FieldUnit eUnit = (FieldUnit)pMetricItem->GetValue();
361         pPref->SetHScrollMetric(eUnit);
362         if(pAppView)
363             pAppView->ChangeTabMetric(eUnit);
364 	}
365 
366     if( SFX_ITEM_SET == rSet.GetItemState(FN_VSCROLL_METRIC, sal_False, &pItem ) )
367 	{
368 		const SfxUInt16Item* pMetricItem = (const SfxUInt16Item*)pItem;
369         FieldUnit eUnit = (FieldUnit)pMetricItem->GetValue();
370         pPref->SetVScrollMetric(eUnit);
371         if(pAppView)
372             pAppView->ChangeVLinealMetric(eUnit);
373     }
374 
375     if( SFX_ITEM_SET == rSet.GetItemState(SID_ATTR_DEFTABSTOP, sal_False, &pItem ) )
376 	{
377 		sal_uInt16 nTabDist = ((const SfxUInt16Item*)pItem)->GetValue();
378         pPref->SetDefTab(nTabDist);
379 		if(pAppView)
380 		{
381             SvxTabStopItem aDefTabs( 0, 0, SVX_TAB_ADJUST_DEFAULT, RES_PARATR_TABSTOP );
382 			MakeDefTabs( nTabDist, aDefTabs );
383 			pAppView->GetWrtShell().SetDefault( aDefTabs );
384 		}
385 	}
386 
387 
388 	/*-----------------01.02.97 11.36-------------------
389 		Hintergrund nur im WebDialog
390 	--------------------------------------------------*/
391 	if(SFX_ITEM_SET == rSet.GetItemState(RES_BACKGROUND))
392 	{
393 		const SvxBrushItem& rBrushItem = (const SvxBrushItem&)rSet.Get(
394 								RES_BACKGROUND);
395 		aViewOpt.SetRetoucheColor( rBrushItem.GetColor() );
396 	}
397 
398 	/*--------------------------------------------------------------------
399 			Seite Rastereinstellungen auswerten
400 	----------------------------------------------------------------------*/
401 
402 	if( SFX_ITEM_SET == rSet.GetItemState( SID_ATTR_GRID_OPTIONS, sal_False, &pItem ))
403 	{
404 		const SvxGridItem* pGridItem = (const SvxGridItem*)pItem;
405 
406 		aViewOpt.SetSnap( pGridItem->GetUseGridSnap() );
407 		aViewOpt.SetSynchronize(pGridItem->GetSynchronize());
408 		if( aViewOpt.IsGridVisible() != pGridItem->GetGridVisible() )
409 			aViewOpt.SetGridVisible( pGridItem->GetGridVisible());
410 		Size aSize = Size( pGridItem->GetFldDrawX()  ,
411 							pGridItem->GetFldDrawY()  );
412 		if( aViewOpt.GetSnapSize() != aSize )
413 			aViewOpt.SetSnapSize( aSize );
414 		short nDiv = (short)pGridItem->GetFldDivisionX() ;
415 		if( aViewOpt.GetDivisionX() != nDiv  )
416 			aViewOpt.SetDivisionX( nDiv );
417 		nDiv = (short)pGridItem->GetFldDivisionY();
418 		if( aViewOpt.GetDivisionY() != nDiv  )
419 			aViewOpt.SetDivisionY( nDiv  );
420 
421 		if(pBindings)
422 		{
423 			pBindings->Invalidate(SID_GRID_VISIBLE);
424 			pBindings->Invalidate(SID_GRID_USE);
425 		}
426 	}
427 
428 	//--------------------------------------------------------------------------
429 	//	 	Writer Drucker Zusatzeinstellungen auswerten
430 	//----------------------------------------------------------------------------
431 
432 	if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_ADDPRINTER, sal_False, &pItem ))
433 	{
434 		SwPrintOptions* pOpt = GetPrtOptions(!bTextDialog);
435 		if (pOpt)
436 		{
437 			const SwAddPrinterItem* pAddPrinterAttr = (const SwAddPrinterItem*)pItem;
438             *pOpt = *pAddPrinterAttr;
439 
440             if(pAppView)
441                 pAppView->GetWrtShell().getIDocumentDeviceAccess()->setPrintData( *pOpt );
442 		}
443 
444 	}
445 
446 	if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem ))
447 	{
448 		((SwShadowCursorItem*)pItem)->FillViewOptions( aViewOpt );
449 		if(pBindings)
450 			pBindings->Invalidate(FN_SHADOWCURSOR);
451 	}
452 
453     if( pAppView )
454 	{
455         SwWrtShell &rWrtSh = pAppView->GetWrtShell();
456         const bool bAlignFormulas = rWrtSh.GetDoc()->get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT );
457         pPref->SetAlignMathObjectsToBaseline( bAlignFormulas );
458 
459         // don't align formulas in documents that are currently loading
460         if (bAlignFormulas && !rWrtSh.GetDoc()->IsInReading())
461             rWrtSh.AlignAllFormulasToBaseline();
462 	}
463 
464 	if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_CRSR_IN_PROTECTED, sal_False, &pItem ))
465 	{
466 		aViewOpt.SetCursorInProtectedArea(((const SfxBoolItem*)pItem)->GetValue());
467 	}
468 
469 
470 #ifdef DBG_UTIL
471 	/*--------------------------------------------------------------------------
472 				Writer Testseite auswerten
473 	----------------------------------------------------------------------------*/
474 
475 			if( SFX_ITEM_SET == rSet.GetItemState(
476 						FN_PARAM_SWTEST, sal_False, &pItem ))
477 			{
478 				const SwTestItem* pTestItem = (const SwTestItem*)pItem;
479 				aViewOpt.SetTest1((sal_Bool)pTestItem->bTest1);
480 				aViewOpt.SetTest2((sal_Bool)pTestItem->bTest2);
481 				aViewOpt.SetTest3((sal_Bool)pTestItem->bTest3);
482 				aViewOpt.SetTest4((sal_Bool)pTestItem->bTest4);
483 				aViewOpt.SetTest5((sal_Bool)pTestItem->bTest5);
484 				aViewOpt.SetTest6((sal_Bool)pTestItem->bTest6);
485 				aViewOpt.SetTest7((sal_Bool)pTestItem->bTest7);
486 				aViewOpt.SetTest8((sal_Bool)pTestItem->bTest8);
487 				SwViewOption::SetTest9((sal_Bool)pTestItem->bTest9);
488 				aViewOpt.SetTest10((sal_Bool)pTestItem->bTest10);
489 			}
490 #endif
491 		// dann an der akt. View und Shell die entsp. Elemente setzen
492 	ApplyUsrPref( aViewOpt, pAppView, bTextDialog? VIEWOPT_DEST_TEXT : VIEWOPT_DEST_WEB);
493 }
494 /* -----------------12.02.99 12:28-------------------
495  *
496  * --------------------------------------------------*/
497 SfxTabPage* SwModule::CreateTabPage( sal_uInt16 nId, Window* pParent, const SfxItemSet& rSet )
498 {
499 	SfxTabPage* pRet = NULL;
500 	SfxAllItemSet aSet(*(rSet.GetPool()));
501 	switch( nId )
502 	{
503 		case RID_SW_TP_CONTENT_OPT:
504 		case RID_SW_TP_HTML_CONTENT_OPT:
505 		{
506 			SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
507 			if ( pFact )
508 			{
509 				::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
510 				if ( fnCreatePage )
511 					pRet = (*fnCreatePage)( pParent, rSet );
512 			}
513 			break;
514 		}
515         case RID_SW_TP_HTML_OPTGRID_PAGE:
516 		case RID_SVXPAGE_GRID:
517 			pRet = SvxGridTabPage::Create(pParent, rSet);
518 		break;
519 
520         case RID_SW_TP_STD_FONT:
521         case RID_SW_TP_STD_FONT_CJK:
522         case RID_SW_TP_STD_FONT_CTL:
523 		{
524             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
525 			if ( pFact )
526 			{
527 				::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
528 				if ( fnCreatePage )
529 					pRet = (*fnCreatePage)( pParent, rSet );
530 			}
531 			if(RID_SW_TP_STD_FONT != nId)
532 			{
533 				aSet.Put (SfxUInt16Item(SID_FONTMODE_TYPE, RID_SW_TP_STD_FONT_CJK == nId ? FONT_GROUP_CJK : FONT_GROUP_CTL));
534 				pRet->PageCreated(aSet);
535 			}
536 		}
537 		break;
538 		case RID_SW_TP_HTML_OPTPRINT_PAGE:
539 		case RID_SW_TP_OPTPRINT_PAGE:
540 		{
541 			SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
542 			if ( pFact )
543 			{
544 				::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
545 				if ( fnCreatePage )
546 					pRet = (*fnCreatePage)( pParent, rSet );
547 			}
548 			aSet.Put (SfxBoolItem(SID_FAX_LIST, sal_True));
549 			pRet->PageCreated(aSet);
550 		}
551 		break;
552 		case RID_SW_TP_HTML_OPTTABLE_PAGE:
553 		case RID_SW_TP_OPTTABLE_PAGE:
554 		{
555 			SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
556 			if ( pFact )
557 			{
558 				::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
559 				if ( fnCreatePage )
560 					pRet = (*fnCreatePage)( pParent, rSet );
561 			}
562             SwView* pCurrView = GetView();
563             if(pCurrView)
564 			{
565 				// wenn Text dann nicht WebView und umgekehrt
566                 sal_Bool bWebView = 0 != PTR_CAST(SwWebView, pCurrView);
567 				if( (bWebView &&  RID_SW_TP_HTML_OPTTABLE_PAGE == nId) ||
568 					(!bWebView &&  RID_SW_TP_HTML_OPTTABLE_PAGE != nId) )
569 				{
570                     aSet.Put (SwWrtShellItem(SID_WRT_SHELL,pCurrView->GetWrtShellPtr()));
571 					pRet->PageCreated(aSet);
572 				}
573 			}
574 		}
575 		break;
576         case RID_SW_TP_OPTSHDWCRSR:
577         case RID_SW_TP_HTML_OPTSHDWCRSR:
578         case RID_SW_TP_REDLINE_OPT:
579         case RID_SW_TP_OPTLOAD_PAGE:
580         case RID_SW_TP_OPTCOMPATIBILITY_PAGE:
581         case RID_SW_TP_MAILCONFIG:
582         {
583 			SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
584 			if ( pFact )
585 			{
586 				::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
587 				if ( fnCreatePage )
588 					pRet = (*fnCreatePage)( pParent, rSet );
589 			}
590             if (pRet && (nId == RID_SW_TP_OPTSHDWCRSR || nId == RID_SW_TP_HTML_OPTSHDWCRSR))
591             {
592                 SwView* pCurrView = GetView();
593                 if(pCurrView)
594                 {
595                     aSet.Put( SwWrtShellItem( SID_WRT_SHELL, pCurrView->GetWrtShellPtr() ) );
596                     pRet->PageCreated(aSet);
597                 }
598             }
599 		}
600 		break;
601 #ifdef DBG_UTIL
602         case  RID_SW_TP_OPTTEST_PAGE:
603 		{
604 			SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
605 			if ( pFact )
606 			{
607 				::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( nId );
608 				if ( fnCreatePage )
609 					pRet = (*fnCreatePage)( pParent, rSet );
610 			}
611 			break;
612 		}
613 #endif
614         case  RID_SW_TP_BACKGROUND:
615 		{
616 			SfxAbstractDialogFactory* pFact = SfxAbstractDialogFactory::Create();
617 			if ( pFact )
618 			{
619 				::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND );
620 				if ( fnCreatePage )
621 					pRet = (*fnCreatePage)( pParent, rSet );
622 			}
623 			break;
624 		}
625 		case TP_OPTCAPTION_PAGE:
626 		case RID_SW_TP_OPTCAPTION_PAGE:
627 		{
628 			SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
629 			if ( pFact )
630 			{
631 				::CreateTabPage fnCreatePage = pFact->GetTabPageCreatorFunc( RID_SW_TP_OPTCAPTION_PAGE );
632 				if ( fnCreatePage )
633 					pRet = (*fnCreatePage)( pParent, rSet );
634 			}
635 		}
636 		break;
637 	}
638 
639 	DBG_ASSERT( pRet, "SwModule::CreateTabPage(): Unknown tabpage id" );
640 	return pRet;
641 }
642 
643