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 #ifdef SW_DLLIMPLEMENTATION
28 #undef SW_DLLIMPLEMENTATION
29 #endif
30
31 #ifndef _SVSTDARR_HXX
32 #define _SVSTDARR_STRINGSDTOR
33 #include <svl/svstdarr.hxx>
34 #endif
35
36 #include <optpage.hxx>
37 #include <doc.hxx>
38 #include <hintids.hxx>
39 #include <cmdid.h>
40 #include <fmtcol.hxx>
41 #include <charatr.hxx>
42 #include <swtypes.hxx>
43 #include <view.hxx>
44 #include <docsh.hxx>
45 #include <IDocumentDeviceAccess.hxx>
46 #include <swmodule.hxx>
47 #include <wrtsh.hxx>
48 #include <uitool.hxx>
49 #include <cfgitems.hxx>
50 #include <poolfmt.hxx>
51 #include <uiitems.hxx>
52 #include <initui.hxx>
53 #include <printdata.hxx>
54 #include <modcfg.hxx>
55 #include <srcview.hxx>
56 #include <crstate.hxx>
57 #include <viewopt.hxx>
58 #include <globals.hrc>
59 #include <config.hrc>
60 #include <redlopt.hrc>
61 #include <optdlg.hrc>
62 #include <swwrtshitem.hxx>
63 #include <unomid.h>
64
65 #include <editeng/fhgtitem.hxx>
66 #include <editeng/fontitem.hxx>
67 #include <editeng/langitem.hxx>
68 #include <sfx2/request.hxx>
69 #include <sfx2/printer.hxx>
70 #include <sfx2/bindings.hxx>
71 #include <svl/slstitm.hxx>
72 #include <svl/ctloptions.hxx>
73 #include <svl/eitem.hxx>
74 #include <svl/cjkoptions.hxx>
75 #include <svtools/ctrltool.hxx>
76 #include <svx/htmlmode.hxx>
77 #include <svx/xtable.hxx>
78 #include <svx/dlgutil.hxx>
79 #include <svx/strarray.hxx>
80 #include <vcl/svapp.hxx>
81
82
83
84 using namespace ::com::sun::star;
85
86
87 /*******************************************************
88 ******************************************************/
89
90 /*-----------------31.08.96 10.16-------------------
91 TabPage Anzeige/Inhalt
92 --------------------------------------------------*/
93
SwContentOptPage(Window * pParent,const SfxItemSet & rCoreSet)94 SwContentOptPage::SwContentOptPage( Window* pParent,
95 const SfxItemSet& rCoreSet ) :
96 SfxTabPage( pParent, SW_RES( TP_CONTENT_OPT ), rCoreSet ),
97 aLineFL ( this, SW_RES( FL_LINE ) ),
98 aCrossCB ( this, SW_RES( CB_CROSS ) ),
99 aBigHandleCB ( this, SW_RES( CB_BIGHANDLE) ),
100
101 aWindowFL ( this, SW_RES( FL_WINDOW ) ),
102 aHScrollBox ( this, SW_RES( CB_HSCROLL ) ),
103 aVScrollBox ( this, SW_RES( CB_VSCROLL ) ),
104 aAnyRulerCB ( this, SW_RES( CB_ANY_RULER ) ),
105 aHRulerCBox ( this, SW_RES( CB_HRULER ) ),
106 aHMetric ( this, SW_RES( LB_HMETRIC ) ),
107 aVRulerCBox ( this, SW_RES( CB_VRULER ) ),
108 aVRulerRightCBox( this, SW_RES( CB_VRULER_RIGHT ) ),
109 aVMetric ( this, SW_RES( LB_VMETRIC ) ),
110 aSmoothCBox ( this, SW_RES( CB_SMOOTH_SCROLL ) ),
111
112 aDispFL ( this, SW_RES( FL_DISP ) ),
113 aGrfCB ( this, SW_RES( CB_GRF ) ),
114 aTblCB ( this, SW_RES( CB_TBL ) ),
115 aDrwCB ( this, SW_RES( CB_DRWFAST ) ),
116 aFldNameCB ( this, SW_RES( CB_FIELD ) ),
117 aPostItCB ( this, SW_RES( CB_POSTIT ) ),
118
119 aSettingsFL ( this, SW_RES( FL_SETTINGS ) ),
120 aMetricFT ( this, SW_RES( FT_METRIC ) ),
121 aMetricLB ( this, SW_RES( LB_METRIC ) )
122 {
123 FreeResource();
124 const SfxPoolItem* pItem;
125 if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
126 && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
127 {
128 aMetricLB.Show();
129 aSettingsFL.Show();
130 aMetricFT.Show();
131 }
132 SvtCJKOptions aCJKOptions;
133 if(aCJKOptions.IsVerticalTextEnabled() )
134 {
135 Point aSmoothPos(aSmoothCBox.GetPosPixel());
136 aSmoothPos.Y() += aSmoothPos.Y() - aVRulerCBox.GetPosPixel().Y();
137 aSmoothCBox.SetPosPixel(aSmoothPos);
138 }
139 else
140 aVRulerRightCBox.Hide();
141 aVRulerCBox.SetClickHdl(LINK(this, SwContentOptPage, VertRulerHdl ));
142 aAnyRulerCB.SetClickHdl(LINK(this, SwContentOptPage, AnyRulerHdl));
143
144 SvxStringArray aMetricArr( SW_RES( STR_ARR_METRIC ) );
145 for ( sal_uInt16 i = 0; i < aMetricArr.Count(); ++i )
146 {
147 String sMetric = aMetricArr.GetStringByPos( i );
148 FieldUnit eFUnit = (FieldUnit)aMetricArr.GetValue( i );
149
150 switch ( eFUnit )
151 {
152 case FUNIT_MM:
153 case FUNIT_CM:
154 case FUNIT_POINT:
155 case FUNIT_PICA:
156 case FUNIT_INCH:
157 {
158 // nur diese Metriken benutzen
159 sal_uInt16 nPos = aMetricLB.InsertEntry( sMetric );
160 aMetricLB.SetEntryData( nPos, (void*)(long)eFUnit );
161 aVMetric.InsertEntry( sMetric );
162 aVMetric.SetEntryData( nPos, (void*)(long)eFUnit );
163 aHMetric.InsertEntry( sMetric );
164 aHMetric.SetEntryData( nPos, (void*)(long)eFUnit );
165 }
166 default:;//prevent warning
167 }
168 }
169 }
170
171 /*-----------------31.08.96 13.58-------------------
172
173 --------------------------------------------------*/
~SwContentOptPage()174 SwContentOptPage::~SwContentOptPage()
175 {
176 }
177
178 /*-----------------31.08.96 13.58-------------------
179
180 --------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rAttrSet)181 SfxTabPage* SwContentOptPage::Create( Window* pParent,
182 const SfxItemSet& rAttrSet)
183 {
184 return new SwContentOptPage(pParent, rAttrSet);
185 }
186 /* -----------------------------07.04.01 16:57--------------------------------
187
188 ---------------------------------------------------------------------------*/
lcl_SelectMetricLB(ListBox & rMetric,sal_uInt16 nSID,const SfxItemSet & rSet)189 static void lcl_SelectMetricLB(ListBox& rMetric, sal_uInt16 nSID, const SfxItemSet& rSet)
190 {
191 const SfxPoolItem* pItem;
192 if( rSet.GetItemState( nSID, sal_False, &pItem ) >= SFX_ITEM_AVAILABLE )
193 {
194 FieldUnit eFieldUnit = (FieldUnit)((SfxUInt16Item*)pItem)->GetValue();
195 for ( sal_uInt16 i = 0; i < rMetric.GetEntryCount(); ++i )
196 {
197 if ( (int)(sal_IntPtr)rMetric.GetEntryData( i ) == (int)eFieldUnit )
198 {
199 rMetric.SelectEntryPos( i );
200 break;
201 }
202 }
203 }
204 rMetric.SaveValue();
205 }
206 /*-----------------31.08.96 13.58-------------------
207
208 --------------------------------------------------*/
Reset(const SfxItemSet & rSet)209 void SwContentOptPage::Reset(const SfxItemSet& rSet)
210 {
211 const SwElemItem* pElemAttr = 0;
212
213 rSet.GetItemState( FN_PARAM_ELEM , sal_False,
214 (const SfxPoolItem**)&pElemAttr );
215 if(pElemAttr)
216 {
217 aTblCB .Check (pElemAttr->bTable );
218 aGrfCB .Check (pElemAttr->bGraphic );
219 aDrwCB .Check (pElemAttr->bDrawing );
220 aFldNameCB .Check (pElemAttr->bFieldName );
221 aPostItCB .Check (pElemAttr->bNotes );
222 aCrossCB .Check( pElemAttr->bCrosshair );
223 aBigHandleCB.Check(pElemAttr->bBigHandles );
224 aHScrollBox.Check( pElemAttr->bHorzScrollbar );
225 aVScrollBox.Check( pElemAttr->bVertScrollbar );
226 aAnyRulerCB.Check( pElemAttr->bAnyRuler );
227 aHRulerCBox.Check( pElemAttr->bHorzRuler );
228 aVRulerCBox.Check( pElemAttr->bVertRuler );
229 aVRulerRightCBox.Check(pElemAttr->bVertRulerRight);
230 aSmoothCBox.Check( pElemAttr->bSmoothScroll );
231 }
232 aMetricLB.SetNoSelection();
233 lcl_SelectMetricLB(aMetricLB, SID_ATTR_METRIC, rSet);
234 lcl_SelectMetricLB(aHMetric, FN_HSCROLL_METRIC, rSet);
235 lcl_SelectMetricLB(aVMetric, FN_VSCROLL_METRIC, rSet);
236 AnyRulerHdl(&aAnyRulerCB);
237 }
238
239 /*-----------------31.08.96 13.58-------------------
240
241 --------------------------------------------------*/
FillItemSet(SfxItemSet & rSet)242 sal_Bool SwContentOptPage::FillItemSet(SfxItemSet& rSet)
243 {
244 const SwElemItem* pOldAttr = (const SwElemItem*)
245 GetOldItem(GetItemSet(), FN_PARAM_ELEM);
246
247 SwElemItem aElem;
248 if(pOldAttr)
249 aElem = *pOldAttr;
250 aElem.bTable = aTblCB .IsChecked();
251 aElem.bGraphic = aGrfCB .IsChecked();
252 aElem.bDrawing = aDrwCB .IsChecked();
253 aElem.bFieldName = aFldNameCB .IsChecked();
254 aElem.bNotes = aPostItCB .IsChecked();
255 aElem.bCrosshair = aCrossCB .IsChecked();
256 aElem.bBigHandles = aBigHandleCB.IsChecked();
257 aElem.bHorzScrollbar = aHScrollBox.IsChecked();
258 aElem.bVertScrollbar = aVScrollBox.IsChecked();
259 aElem.bAnyRuler = aAnyRulerCB.IsChecked();
260 aElem.bHorzRuler = aHRulerCBox.IsChecked();
261 aElem.bVertRuler = aVRulerCBox.IsChecked();
262 aElem.bVertRulerRight= aVRulerRightCBox.IsChecked();
263 aElem.bSmoothScroll = aSmoothCBox.IsChecked();
264
265
266 sal_Bool bRet = !pOldAttr || aElem != *pOldAttr;
267 if(bRet)
268 bRet = 0 != rSet.Put(aElem);
269 sal_uInt16 nMPos = aMetricLB.GetSelectEntryPos();
270 sal_uInt16 nGlobalMetricPos = nMPos;
271 if ( nMPos != aMetricLB.GetSavedValue() )
272 {
273 // Doppel-Cast fuer VA3.0
274 sal_uInt16 nFieldUnit = (sal_uInt16)(long)aMetricLB.GetEntryData( nMPos );
275 rSet.Put( SfxUInt16Item( SID_ATTR_METRIC, (sal_uInt16)nFieldUnit ) );
276 bRet = sal_True;
277 }
278
279 nMPos = aHMetric.GetSelectEntryPos();
280 if ( nMPos != aHMetric.GetSavedValue() || nMPos != nGlobalMetricPos )
281 {
282 // Doppel-Cast fuer VA3.0
283 sal_uInt16 nFieldUnit = (sal_uInt16)(long)aHMetric.GetEntryData( nMPos );
284 rSet.Put( SfxUInt16Item( FN_HSCROLL_METRIC, (sal_uInt16)nFieldUnit ) );
285 bRet = sal_True;
286 }
287 nMPos = aVMetric.GetSelectEntryPos();
288 if ( nMPos != aVMetric.GetSavedValue() || nMPos != nGlobalMetricPos )
289 {
290 // Doppel-Cast fuer VA3.0
291 sal_uInt16 nFieldUnit = (sal_uInt16)(long)aVMetric.GetEntryData( nMPos );
292 rSet.Put( SfxUInt16Item( FN_VSCROLL_METRIC, (sal_uInt16)nFieldUnit ) );
293 bRet = sal_True;
294 }
295 return bRet;
296 }
297 /* -----------------------------05.03.2002 15:07------------------------------
298
299 ---------------------------------------------------------------------------*/
IMPL_LINK(SwContentOptPage,VertRulerHdl,CheckBox *,pBox)300 IMPL_LINK(SwContentOptPage, VertRulerHdl, CheckBox*, pBox)
301 {
302 aVRulerRightCBox.Enable(pBox->IsEnabled() && pBox->IsChecked());
303 return 0;
304 }
305 /* -----------------20.09.2002 11:30-----------------
306 *
307 * --------------------------------------------------*/
IMPL_LINK(SwContentOptPage,AnyRulerHdl,CheckBox *,pBox)308 IMPL_LINK( SwContentOptPage, AnyRulerHdl, CheckBox*, pBox)
309 {
310 sal_Bool bChecked = pBox->IsChecked();
311 aHRulerCBox .Enable(bChecked);
312 aHMetric .Enable(bChecked);
313 aVRulerCBox .Enable(bChecked);
314 aVMetric .Enable(bChecked);
315 VertRulerHdl(&aVRulerCBox);
316 return 0;
317 }
318 /*----------------- OS 27.01.95 -----------------------
319 TabPage Drucker Zusatzeinstellungen
320 -------------------------------------------------------*/
SwAddPrinterTabPage(Window * pParent,const SfxItemSet & rCoreSet)321 SwAddPrinterTabPage::SwAddPrinterTabPage( Window* pParent,
322 const SfxItemSet& rCoreSet) :
323 SfxTabPage( pParent, SW_RES( TP_OPTPRINT_PAGE ), rCoreSet),
324 aFL1 (this, SW_RES(FL_1)),
325 aGrfCB (this, SW_RES(CB_PGRF)),
326 // aTabCB (this, SW_RES(CB_PTAB)),
327 // aDrawCB (this, SW_RES(CB_PDRAW)),
328 aCtrlFldCB (this, SW_RES(CB_CTRLFLD)),
329 aBackgroundCB (this, SW_RES(CB_BACKGROUND)),
330 aBlackFontCB (this, SW_RES(CB_BLACK_FONT)),
331 aPrintHiddenTextCB(this, SW_RES(CB_HIDDEN_TEXT)),
332 aPrintTextPlaceholderCB(this, SW_RES(CB_TEXT_PLACEHOLDER)),
333 aSeparatorLFL (this, SW_RES(FL_SEP_PRT_LEFT )),
334 aFL2 (this, SW_RES(FL_2)),
335 aLeftPageCB (this, SW_RES(CB_LEFTP)),
336 aRightPageCB (this, SW_RES(CB_RIGHTP)),
337 // aReverseCB (this, SW_RES(CB_REVERSE)),
338 aProspectCB (this, SW_RES(CB_PROSPECT)),
339 aProspectCB_RTL (this, SW_RES(CB_PROSPECT_RTL)),
340 aSeparatorRFL (this, SW_RES(FL_SEP_PRT_RIGHT)),
341 aFL3 (this, SW_RES(FL_3)),
342 aNoRB (this, SW_RES(RB_NO)),
343 aOnlyRB (this, SW_RES(RB_ONLY)),
344 aEndRB (this, SW_RES(RB_END)),
345 aEndPageRB (this, SW_RES(RB_PAGEEND)),
346 aFL4 (this, SW_RES(FL_4)),
347 aPrintEmptyPagesCB(this, SW_RES(CB_PRINTEMPTYPAGES)),
348 // aSingleJobsCB (this, SW_RES(CB_SINGLEJOBS)),
349 aPaperFromSetupCB(this, SW_RES(CB_PAPERFROMSETUP)),
350 aFaxFT (this, SW_RES(FT_FAX)),
351 aFaxLB (this, SW_RES(LB_FAX)),
352 sNone(SW_RES(ST_NONE)),
353 bAttrModified( sal_False ),
354 bPreview ( sal_False )
355 {
356 Init();
357 FreeResource();
358 Link aLk = LINK( this, SwAddPrinterTabPage, AutoClickHdl);
359 aGrfCB.SetClickHdl( aLk );
360 aRightPageCB.SetClickHdl( aLk );
361 aLeftPageCB.SetClickHdl( aLk );
362 // aTabCB.SetClickHdl( aLk );
363 // aDrawCB.SetClickHdl( aLk );
364 aCtrlFldCB.SetClickHdl( aLk );
365 aBackgroundCB.SetClickHdl( aLk );
366 aBlackFontCB.SetClickHdl( aLk );
367 aPrintHiddenTextCB.SetClickHdl( aLk );
368 aPrintTextPlaceholderCB.SetClickHdl( aLk );
369 // aReverseCB.SetClickHdl( aLk );
370 aProspectCB.SetClickHdl( aLk );
371 aProspectCB_RTL.SetClickHdl( aLk );
372 aPaperFromSetupCB.SetClickHdl( aLk );
373 aPrintEmptyPagesCB.SetClickHdl( aLk );
374 aEndPageRB.SetClickHdl( aLk );
375 aEndRB.SetClickHdl( aLk );
376 aOnlyRB.SetClickHdl( aLk );
377 aNoRB.SetClickHdl( aLk );
378 // aSingleJobsCB.SetClickHdl( aLk );
379 aFaxLB.SetSelectHdl( LINK( this, SwAddPrinterTabPage, SelectHdl ) );
380
381 const SfxPoolItem* pItem;
382 if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
383 && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
384 {
385 // aDrawCB .Hide();
386 aLeftPageCB .Hide();
387 aRightPageCB .Hide();
388 aPrintHiddenTextCB.Hide();
389 aPrintTextPlaceholderCB.Hide();
390 // aReverseCB.SetPosPixel(aLeftPageCB.GetPosPixel());
391 aProspectCB.SetPosPixel(aLeftPageCB.GetPosPixel());
392 Point aPt( aRightPageCB.GetPosPixel() );
393 aPt.setX(aPt.getX() + 15); // indent
394 aProspectCB_RTL.SetPosPixel(aPt);
395 // aBlackFontCB.SetPosPixel(aBackgroundCB.GetPosPixel());
396 // aPrintHiddenTextCB.SetPosPixel(aBlackFontCB.GetPosPixel());
397 // aBackgroundCB.SetPosPixel(aCtrlFldCB.GetPosPixel());
398 // aCtrlFldCB.SetPosPixel(aDrawCB.GetPosPixel());
399
400 // hide aPrintEmptyPagesCB and move everything below up accordingly
401 long nDeltaY = aPaperFromSetupCB.GetPosPixel().getY() - aPrintEmptyPagesCB.GetPosPixel().getY();
402 aPrintEmptyPagesCB.Hide();
403 aPt = aPaperFromSetupCB.GetPosPixel();
404 aPt.setY( aPt.getY() - nDeltaY );
405 aPaperFromSetupCB.SetPosPixel( aPt );
406 aPt = aFaxFT.GetPosPixel();
407 aPt.setY( aPt.getY() - nDeltaY );
408 aFaxFT.SetPosPixel( aPt );
409 aPt = aFaxLB.GetPosPixel();
410 aPt.setY( aPt.getY() - nDeltaY );
411 aFaxLB.SetPosPixel( aPt );
412 }
413 aProspectCB_RTL.Disable();
414 SvtCTLOptions aCTLOptions;
415 aProspectCB_RTL.Show(aCTLOptions.IsCTLFontEnabled());
416 }
417
418 //------------------------------------------------------------------------
419
SetPreview(sal_Bool bPrev)420 void SwAddPrinterTabPage::SetPreview(sal_Bool bPrev)
421 {
422 bPreview = bPrev;
423
424 if (bPreview)
425 {
426 aLeftPageCB.Disable();
427 aRightPageCB.Disable();
428 aProspectCB.Disable();
429 aProspectCB_RTL.Disable();
430 aFL3.Disable();
431 aNoRB.Disable();
432 aOnlyRB.Disable();
433 aEndRB.Disable();
434 aEndPageRB.Disable();
435 }
436 }
437
438 //------------------------------------------------------------------------
439
Create(Window * pParent,const SfxItemSet & rAttrSet)440 SfxTabPage* SwAddPrinterTabPage::Create( Window* pParent,
441 const SfxItemSet& rAttrSet )
442 {
443 return ( new SwAddPrinterTabPage( pParent, rAttrSet ) );
444 }
445 //------------------------------------------------------------------------
446
447
FillItemSet(SfxItemSet & rCoreSet)448 sal_Bool SwAddPrinterTabPage::FillItemSet( SfxItemSet& rCoreSet )
449 {
450 if ( bAttrModified )
451 {
452 SwAddPrinterItem aAddPrinterAttr (FN_PARAM_ADDPRINTER);
453 aAddPrinterAttr.bPrintGraphic = aGrfCB.IsChecked();
454 aAddPrinterAttr.bPrintTable = sal_True; // always enabled since CWS printerpullgpages /*aTabCB.IsChecked();*/
455 aAddPrinterAttr.bPrintDraw = aGrfCB.IsChecked(); // UI merged with aGrfCB in CWS printerpullgpages /*aDrawCB.IsChecked()*/;
456 aAddPrinterAttr.bPrintControl = aCtrlFldCB.IsChecked();
457 aAddPrinterAttr.bPrintPageBackground = aBackgroundCB.IsChecked();
458 aAddPrinterAttr.bPrintBlackFont = aBlackFontCB.IsChecked();
459 aAddPrinterAttr.bPrintHiddenText = aPrintHiddenTextCB.IsChecked();
460 aAddPrinterAttr.bPrintTextPlaceholder = aPrintTextPlaceholderCB.IsChecked();
461
462 aAddPrinterAttr.bPrintLeftPages = aLeftPageCB.IsChecked();
463 aAddPrinterAttr.bPrintRightPages = aRightPageCB.IsChecked();
464 aAddPrinterAttr.bPrintReverse = sal_False; // handled by vcl itself since CWS printerpullpages /*aReverseCB.IsChecked()*/;
465 aAddPrinterAttr.bPrintProspect = aProspectCB.IsChecked();
466 aAddPrinterAttr.bPrintProspectRTL = aProspectCB_RTL.IsChecked();
467 aAddPrinterAttr.bPaperFromSetup = aPaperFromSetupCB.IsChecked();
468 aAddPrinterAttr.bPrintEmptyPages = aPrintEmptyPagesCB.IsChecked();
469 aAddPrinterAttr.bPrintSingleJobs = sal_True; // handled by vcl in new print dialog since CWS printerpullpages /*aSingleJobsCB.IsChecked()*/;
470
471 if (aNoRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
472 POSTITS_NONE;
473 if (aOnlyRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
474 POSTITS_ONLY;
475 if (aEndRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
476 POSTITS_ENDDOC;
477 if (aEndPageRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
478 POSTITS_ENDPAGE;
479
480 String sFax = aFaxLB.GetSelectEntry();
481 aAddPrinterAttr.sFaxName = sNone == sFax ? aEmptyStr : sFax;
482 rCoreSet.Put(aAddPrinterAttr);
483 }
484 return bAttrModified;
485 }
486 //------------------------------------------------------------------------
487
488
Reset(const SfxItemSet &)489 void SwAddPrinterTabPage::Reset( const SfxItemSet& )
490 {
491 const SfxItemSet& rSet = GetItemSet();
492 const SwAddPrinterItem* pAddPrinterAttr = 0;
493
494 if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_ADDPRINTER , sal_False,
495 (const SfxPoolItem**)&pAddPrinterAttr ))
496 {
497 aGrfCB.Check( pAddPrinterAttr->bPrintGraphic || pAddPrinterAttr->bPrintDraw );
498 // aTabCB.Check( pAddPrinterAttr->bPrintTable);
499 // aDrawCB.Check( pAddPrinterAttr->bPrintDraw);
500 aCtrlFldCB.Check( pAddPrinterAttr->bPrintControl);
501 aBackgroundCB.Check( pAddPrinterAttr->bPrintPageBackground);
502 aBlackFontCB.Check( pAddPrinterAttr->bPrintBlackFont);
503 aPrintHiddenTextCB.Check( pAddPrinterAttr->bPrintHiddenText);
504 aPrintTextPlaceholderCB.Check(pAddPrinterAttr->bPrintTextPlaceholder);
505 aLeftPageCB.Check( pAddPrinterAttr->bPrintLeftPages);
506 aRightPageCB.Check( pAddPrinterAttr->bPrintRightPages);
507 // aReverseCB.Check( pAddPrinterAttr->bPrintReverse);
508 aPaperFromSetupCB.Check(pAddPrinterAttr->bPaperFromSetup);
509 aPrintEmptyPagesCB.Check(pAddPrinterAttr->bPrintEmptyPages);
510 aProspectCB.Check( pAddPrinterAttr->bPrintProspect);
511 aProspectCB_RTL.Check( pAddPrinterAttr->bPrintProspectRTL);
512 // aSingleJobsCB.Check( pAddPrinterAttr->bPrintSingleJobs);
513
514 aNoRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_NONE ) ;
515 aOnlyRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ONLY ) ;
516 aEndRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDDOC ) ;
517 aEndPageRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDPAGE ) ;
518 aFaxLB.SelectEntry( pAddPrinterAttr->sFaxName );
519 }
520 if (aProspectCB.IsChecked())
521 {
522 aProspectCB_RTL.Enable(sal_True);
523 aNoRB.Enable( sal_False );
524 aOnlyRB.Enable( sal_False );
525 aEndRB.Enable( sal_False );
526 aEndPageRB.Enable( sal_False );
527 }
528 else
529 aProspectCB_RTL.Enable( sal_False );
530 }
531 //-----------------------------------------------------------------------
532
533
Init()534 void SwAddPrinterTabPage::Init()
535 {
536
537 }
538 //------------------------------------------------------------------------
539
540
IMPL_LINK_INLINE_START(SwAddPrinterTabPage,AutoClickHdl,CheckBox *,EMPTYARG)541 IMPL_LINK_INLINE_START( SwAddPrinterTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
542 {
543 bAttrModified = sal_True;
544 bool bIsProspect = aProspectCB.IsChecked();
545 if (!bIsProspect)
546 aProspectCB_RTL.Check( sal_False );
547 aProspectCB_RTL.Enable( bIsProspect );
548 aNoRB.Enable( !bIsProspect );
549 aOnlyRB.Enable( !bIsProspect );
550 aEndRB.Enable( !bIsProspect );
551 aEndPageRB.Enable( !bIsProspect );
552 return 0;
553 }
IMPL_LINK_INLINE_END(SwAddPrinterTabPage,AutoClickHdl,CheckBox *,EMPTYARG)554 IMPL_LINK_INLINE_END( SwAddPrinterTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
555
556 //------------------------------------------------------------------------
557
558
559 void SwAddPrinterTabPage::SetFax( const SvStringsDtor& rFaxLst )
560 {
561 aFaxLB.InsertEntry(sNone);
562 for ( sal_uInt16 i = 0; i < rFaxLst.Count(); ++i )
563 aFaxLB.InsertEntry( *rFaxLst.GetObject(i) );
564 aFaxLB.SelectEntryPos(0);
565 }
566
567 //------------------------------------------------------------------------
568
569
IMPL_LINK_INLINE_START(SwAddPrinterTabPage,SelectHdl,ListBox *,EMPTYARG)570 IMPL_LINK_INLINE_START( SwAddPrinterTabPage, SelectHdl, ListBox *, EMPTYARG )
571 {
572 bAttrModified=sal_True;
573 return 0;
574 }
IMPL_LINK_INLINE_END(SwAddPrinterTabPage,SelectHdl,ListBox *,EMPTYARG)575 IMPL_LINK_INLINE_END( SwAddPrinterTabPage, SelectHdl, ListBox *, EMPTYARG )
576
577 void SwAddPrinterTabPage::PageCreated (SfxAllItemSet aSet)
578 {
579 //SFX_ITEMSET_ARG (&aSet,pListItem,SfxStringListItem,SID_FAX_LIST,sal_False);
580 SFX_ITEMSET_ARG (&aSet,pListItem,SfxBoolItem,SID_FAX_LIST,sal_False);
581 SFX_ITEMSET_ARG (&aSet,pPreviewItem,SfxBoolItem,SID_PREVIEWFLAG_TYPE,sal_False);
582 if (pPreviewItem)
583 {
584 SetPreview(pPreviewItem->GetValue());
585 Reset(aSet);
586 }
587 if (pListItem && pListItem->GetValue())
588 {
589 SvStringsDtor aFaxList;
590 const std::vector<rtl::OUString>& rPrinters = Printer::GetPrinterQueues();
591 for (unsigned int i = 0; i < rPrinters.size(); ++i)
592 {
593 String* pString = new String( rPrinters[i] );
594 String* &rpString = pString;
595 aFaxList.Insert(rpString, 0);
596 }
597 SetFax( aFaxList );
598 /* SvStringsDtor aFaxList;
599 const List *pList = (pListItem)->GetList();
600 sal_uInt32 nCount = pList->Count();
601 for(sal_uInt32 i = 0; i < nCount ; i++)
602 {
603 String* pString = (String*)(pList->GetObject(i));
604 String* &rpString = pString;
605 aFaxList.Insert(rpString, 0 );
606 }
607 SetFax(aFaxList);
608 */
609 }
610 }
611 /*-----------------03.09.96 11.53-------------------
612 Tabpage Standardfonts
613 --------------------------------------------------*/
614
615
SwStdFontTabPage(Window * pParent,const SfxItemSet & rSet)616 SwStdFontTabPage::SwStdFontTabPage( Window* pParent,
617 const SfxItemSet& rSet ) :
618 SfxTabPage( pParent, SW_RES( TP_STD_FONT ), rSet),
619 aStdChrFL (this, SW_RES(FL_STDCHR )),
620 aTypeFT( this, SW_RES( FT_TYPE )),
621
622 aStandardLbl(this, SW_RES(FT_STANDARD)),
623 aStandardBox(this, SW_RES(LB_STANDARD)),
624
625 aHeightFT( this, SW_RES( FT_SIZE )),
626 aStandardHeightLB(this, SW_RES( LB_STANDARD_SIZE )),
627
628 aTitleLbl (this, SW_RES(FT_TITLE )),
629 aTitleBox (this, SW_RES(LB_TITLE )),
630 aTitleHeightLB( this, SW_RES( LB_TITLE_SIZE )),
631
632 aListLbl (this, SW_RES(FT_LIST )),
633 aListBox (this, SW_RES(LB_LIST )),
634 aListHeightLB( this, SW_RES( LB_LIST_SIZE )),
635
636 aLabelLbl (this, SW_RES(FT_LABEL )),
637 aLabelBox (this, SW_RES(LB_LABEL )),
638 aLabelHeightLB( this, SW_RES( LB_LABEL_SIZE )),
639
640 aIdxLbl (this, SW_RES(FT_IDX )),
641 aIdxBox (this, SW_RES(LB_IDX )),
642 aIndexHeightLB( this, SW_RES( LB_INDEX_SIZE )),
643
644 aDocOnlyCB (this, SW_RES(CB_DOCONLY )),
645 aStandardPB (this, SW_RES(PB_STANDARD)),
646 pPrt(0),
647 pFontList(0),
648 pFontConfig(0),
649 pWrtShell(0),
650 eLanguage( GetAppLanguage() ),
651
652 bListDefault(sal_False),
653 bSetListDefault(sal_True),
654 bLabelDefault(sal_False),
655 bSetLabelDefault(sal_True),
656 bIdxDefault(sal_False),
657 bSetIdxDefault(sal_True),
658 bDeletePrinter(sal_False),
659
660 bListHeightDefault (sal_False),
661 bSetListHeightDefault (sal_False),
662 bLabelHeightDefault (sal_False),
663 bSetLabelHeightDefault(sal_False),
664 bIndexHeightDefault (sal_False),
665 bSetIndexHeightDefault (sal_False),
666
667 nFontGroup(FONT_GROUP_DEFAULT),
668
669 sScriptWestern(SW_RES(ST_SCRIPT_WESTERN)),
670 sScriptAsian(SW_RES(ST_SCRIPT_ASIAN)),
671 sScriptComplex(SW_RES(ST_SCRIPT_CTL))
672 {
673 FreeResource();
674 aStandardPB.SetClickHdl(LINK(this, SwStdFontTabPage, StandardHdl));
675 aStandardBox.SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
676 aListBox .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
677 aLabelBox .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
678 aIdxBox .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
679 Link aFocusLink = LINK( this, SwStdFontTabPage, LoseFocusHdl);
680 aStandardBox.SetLoseFocusHdl( aFocusLink );
681 aTitleBox .SetLoseFocusHdl( aFocusLink );
682 aListBox .SetLoseFocusHdl( aFocusLink );
683 aLabelBox .SetLoseFocusHdl( aFocusLink );
684 aIdxBox .SetLoseFocusHdl( aFocusLink );
685
686 Link aModifyHeightLink( LINK( this, SwStdFontTabPage, ModifyHeightHdl));
687 aStandardHeightLB.SetModifyHdl( aModifyHeightLink );
688 aTitleHeightLB. SetModifyHdl( aModifyHeightLink );
689 aListHeightLB. SetModifyHdl( aModifyHeightLink );
690 aLabelHeightLB. SetModifyHdl( aModifyHeightLink );
691 aIndexHeightLB. SetModifyHdl( aModifyHeightLink );
692
693 aDocOnlyCB.Check(SW_MOD()->GetModuleConfig()->IsDefaultFontInCurrDocOnly());
694 }
695
696 /*-----------------03.09.96 11.53-------------------
697
698 --------------------------------------------------*/
699
~SwStdFontTabPage()700 SwStdFontTabPage::~SwStdFontTabPage()
701 {
702 if(bDeletePrinter)
703 delete pPrt;
704 }
705
706 /*-----------------03.09.96 11.53-------------------
707
708 --------------------------------------------------*/
Create(Window * pParent,const SfxItemSet & rAttrSet)709 SfxTabPage* SwStdFontTabPage::Create( Window* pParent,
710 const SfxItemSet& rAttrSet )
711 {
712 return new SwStdFontTabPage(pParent, rAttrSet);
713 }
714
715 /*-----------------03.09.96 11.53-------------------
716
717 --------------------------------------------------*/
lcl_SetColl(SwWrtShell * pWrtShell,sal_uInt16 nType,SfxPrinter * pPrt,const String & rStyle,sal_uInt16 nFontWhich)718 void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
719 SfxPrinter* pPrt, const String& rStyle,
720 sal_uInt16 nFontWhich)
721 {
722 Font aFont( rStyle, Size( 0, 10 ) );
723 if( pPrt )
724 aFont = pPrt->GetFontMetric( aFont );
725 SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
726 pColl->SetFmtAttr(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
727 aEmptyStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
728 }
729 /*-- 11.10.2005 15:47:52---------------------------------------------------
730
731 -----------------------------------------------------------------------*/
lcl_SetColl(SwWrtShell * pWrtShell,sal_uInt16 nType,sal_Int32 nHeight,sal_uInt16 nFontHeightWhich)732 void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
733 sal_Int32 nHeight, sal_uInt16 nFontHeightWhich)
734 {
735 float fSize = (float)nHeight / 10;
736 nHeight = CalcToUnit( fSize, SFX_MAPUNIT_TWIP );
737 SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
738 pColl->SetFmtAttr(SvxFontHeightItem(nHeight, 100, nFontHeightWhich));
739 }
740 /*-----------------03.09.96 11.53-------------------
741
742 --------------------------------------------------*/
FillItemSet(SfxItemSet &)743 sal_Bool SwStdFontTabPage::FillItemSet( SfxItemSet& )
744 {
745 sal_Bool bNotDocOnly = !aDocOnlyCB.IsChecked();
746 SW_MOD()->GetModuleConfig()->SetDefaultFontInCurrDocOnly(!bNotDocOnly);
747
748 String sStandard = aStandardBox.GetText();
749 String sTitle = aTitleBox .GetText();
750 String sList = aListBox .GetText();
751 String sLabel = aLabelBox .GetText();
752 String sIdx = aIdxBox .GetText();
753 String sStandardBak = aStandardBox.GetSavedValue();
754 String sTitleBak = aTitleBox .GetSavedValue();
755 String sListBak = aListBox .GetSavedValue();
756 String sLabelBak = aLabelBox .GetSavedValue();
757 String sIdxBak = aIdxBox .GetSavedValue();
758
759 bool bStandardHeightChanged = aStandardHeightLB.GetSavedValue() != aStandardHeightLB.GetText();
760 bool bTitleHeightChanged = aTitleHeightLB.GetSavedValue() != aTitleHeightLB.GetText();
761 bool bListHeightChanged = aListHeightLB.GetSavedValue() != aListHeightLB.GetText() && (!bListHeightDefault || !bSetListHeightDefault );
762 bool bLabelHeightChanged = aLabelHeightLB.GetSavedValue() != aLabelHeightLB.GetText() && (!bLabelHeightDefault || !bSetLabelHeightDefault );
763 bool bIndexHeightChanged = aIndexHeightLB.GetSavedValue() != aIndexHeightLB.GetText() && (!bIndexHeightDefault || !bSetIndexHeightDefault );
764 if(bNotDocOnly)
765 {
766 pFontConfig->SetFontStandard(sStandard, nFontGroup);
767 pFontConfig->SetFontOutline(sTitle, nFontGroup);
768 pFontConfig->SetFontList(sList, nFontGroup);
769 pFontConfig->SetFontCaption(sLabel, nFontGroup);
770 pFontConfig->SetFontIndex(sIdx, nFontGroup);
771 if(bStandardHeightChanged)
772 {
773 float fSize = (float)aStandardHeightLB.GetValue() / 10;
774 pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_STANDARD, nFontGroup );
775 }
776 if(bTitleHeightChanged)
777 {
778 float fSize = (float)aTitleHeightLB.GetValue() / 10;
779 pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_OUTLINE, nFontGroup );
780 }
781 if(bListHeightChanged)
782 {
783 float fSize = (float)aListHeightLB.GetValue() / 10;
784 pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_LIST, nFontGroup );
785 }
786 if(bLabelHeightChanged)
787 {
788 float fSize = (float)aLabelHeightLB.GetValue() / 10;
789 pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_CAPTION, nFontGroup );
790 }
791 if(bIndexHeightChanged)
792 {
793 float fSize = (float)aIndexHeightLB.GetValue() / 10;
794 pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_INDEX, nFontGroup );
795 }
796 }
797 if(pWrtShell)
798 {
799 pWrtShell->StartAllAction();
800 SfxPrinter* pPrinter = pWrtShell->getIDocumentDeviceAccess()->getPrinter( false );
801 sal_Bool bMod = sal_False;
802 sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
803 nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONT :
804 FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
805 sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
806 nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONTSIZE :
807 FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE);
808 if(sStandard != sShellStd)
809 {
810 Font aFont( sStandard, Size( 0, 10 ) );
811 if( pPrinter )
812 aFont = pPrinter->GetFontMetric( aFont );
813 pWrtShell->SetDefault(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
814 aEmptyStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
815 SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
816 pColl->ResetFmtAttr(nFontWhich);
817 // lcl_SetColl(pWrtShell, RES_POOLCOLL_STANDARD, pPrinter, sStandard);
818 bMod = sal_True;
819 }
820 if(bStandardHeightChanged)
821 {
822 float fSize = (float)aStandardHeightLB.GetValue() / 10;
823 pWrtShell->SetDefault(SvxFontHeightItem( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), 100, nFontHeightWhich ) );
824 SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
825 pColl->ResetFmtAttr(nFontHeightWhich);
826 bMod = sal_True;
827 }
828
829 if(sTitle != sShellTitle )
830 {
831 lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE, pPrinter, sTitle, nFontWhich);
832 bMod = sal_True;
833 }
834 if(bTitleHeightChanged)
835 {
836 lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE,
837 sal::static_int_cast< sal_uInt16, sal_Int64 >(aTitleHeightLB.GetValue()), nFontHeightWhich);
838 bMod = sal_True;
839 }
840 if(sList != sShellList && (!bListDefault || !bSetListDefault ))
841 {
842 lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE, pPrinter, sList, nFontWhich);
843 bMod = sal_True;
844 }
845 if(bListHeightChanged)
846 {
847 lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE,
848 sal::static_int_cast< sal_uInt16, sal_Int64 >(aListHeightLB.GetValue()), nFontHeightWhich);
849 bMod = sal_True;
850 }
851 if(sLabel != sShellLabel && (!bLabelDefault || !bSetLabelDefault))
852 {
853 lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL, pPrinter, sLabel, nFontWhich);
854 bMod = sal_True;
855 }
856 if(bLabelHeightChanged)
857 {
858 lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL,
859 sal::static_int_cast< sal_uInt16, sal_Int64 >(aLabelHeightLB.GetValue()), nFontHeightWhich);
860 bMod = sal_True;
861 }
862 if(sIdx != sShellIndex && (!bIdxDefault || !bSetIdxDefault))
863 {
864 lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE, pPrinter, sIdx, nFontWhich);
865 bMod = sal_True;
866 }
867 if(bIndexHeightChanged)
868 {
869 lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE,
870 sal::static_int_cast< sal_uInt16, sal_Int64 >(aIndexHeightLB.GetValue()), nFontHeightWhich);
871 bMod = sal_True;
872 }
873 if ( bMod )
874 pWrtShell->SetModified();
875 pWrtShell->EndAllAction();
876 }
877
878 return sal_False;
879 }
880
881 /*-----------------03.09.96 11.53-------------------
882
883 --------------------------------------------------*/
Reset(const SfxItemSet & rSet)884 void SwStdFontTabPage::Reset( const SfxItemSet& rSet)
885 {
886 const SfxPoolItem* pLang;
887 sal_uInt16 nLangSlot = nFontGroup == FONT_GROUP_DEFAULT ? SID_ATTR_LANGUAGE :
888 FONT_GROUP_CJK == nFontGroup ? SID_ATTR_CHAR_CJK_LANGUAGE : SID_ATTR_CHAR_CTL_LANGUAGE;
889
890
891 if( SFX_ITEM_SET == rSet.GetItemState(nLangSlot, sal_False, &pLang))
892 eLanguage = ((const SvxLanguageItem*)pLang)->GetValue();
893
894 String sTmp(aStdChrFL.GetText());
895 String sToReplace = sScriptWestern;
896 if(FONT_GROUP_CJK == nFontGroup )
897 sToReplace = sScriptAsian;
898 else if(FONT_GROUP_CTL == nFontGroup )
899 sToReplace = sScriptComplex;
900
901 sTmp.SearchAndReplaceAscii("%1", sToReplace);
902 aStdChrFL.SetText(sTmp);
903 const SfxPoolItem* pItem;
904
905 if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_PRINTER, sal_False, &pItem))
906 {
907 pPrt = (SfxPrinter*)((const SwPtrItem*)pItem)->GetValue();
908 }
909 else
910 {
911 SfxItemSet* pPrinterSet = new SfxItemSet( *rSet.GetPool(),
912 SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
913 SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
914 0 );
915 pPrt = new SfxPrinter(pPrinterSet);
916 bDeletePrinter = sal_True;
917 }
918 pFontList = new FontList( pPrt );
919 // #i94536# prevent duplication of font entries when 'reset' button is pressed
920 if( !aStandardBox.GetEntryCount() )
921 {
922 // get the set of disctinct available family names
923 std::set< String > aFontNames;
924 int nFontNames = pPrt->GetDevFontCount();
925 for( int i = 0; i < nFontNames; i++ )
926 {
927 FontInfo aInf( pPrt->GetDevFont( i ) );
928 aFontNames.insert( aInf.GetName() );
929 }
930
931 // insert to listboxes
932 for( std::set< String >::const_iterator it = aFontNames.begin();
933 it != aFontNames.end(); ++it )
934 {
935 aStandardBox.InsertEntry( *it );
936 aTitleBox .InsertEntry( *it );
937 aListBox .InsertEntry( *it );
938 aLabelBox .InsertEntry( *it );
939 aIdxBox .InsertEntry( *it );
940 }
941 }
942 if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_STDFONTS, sal_False, &pItem))
943 {
944 pFontConfig = (SwStdFontConfig*)((const SwPtrItem*)pItem)->GetValue();
945 }
946
947 if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_WRTSHELL, sal_False, &pItem))
948 {
949 pWrtShell = (SwWrtShell*)((const SwPtrItem*)pItem)->GetValue();
950 }
951 String sStdBackup;
952 String sOutBackup;
953 String sListBackup;
954 String sCapBackup;
955 String sIdxBackup;
956 sal_Int32 nStandardHeight = -1;
957 sal_Int32 nTitleHeight = -1;
958 sal_Int32 nListHeight = -1;
959 sal_Int32 nLabelHeight = -1;
960 sal_Int32 nIndexHeight = -1;
961
962 if(!pWrtShell)
963 {
964 sStdBackup = pFontConfig->GetFontStandard(nFontGroup);
965 sOutBackup = pFontConfig->GetFontOutline(nFontGroup);
966 sListBackup= pFontConfig->GetFontList(nFontGroup);
967 sCapBackup = pFontConfig->GetFontCaption(nFontGroup);
968 sIdxBackup = pFontConfig->GetFontIndex(nFontGroup);
969 nStandardHeight = pFontConfig->GetFontHeight( FONT_STANDARD, nFontGroup, eLanguage );
970 nTitleHeight = pFontConfig->GetFontHeight( FONT_OUTLINE , nFontGroup, eLanguage );
971 nListHeight = pFontConfig->GetFontHeight( FONT_LIST , nFontGroup, eLanguage );
972 nLabelHeight = pFontConfig->GetFontHeight( FONT_CAPTION , nFontGroup, eLanguage );
973 nIndexHeight = pFontConfig->GetFontHeight( FONT_INDEX , nFontGroup, eLanguage );
974 if( nStandardHeight <= 0)
975 nStandardHeight = pFontConfig->GetDefaultHeightFor( FONT_STANDARD + nFontGroup * FONT_PER_GROUP, eLanguage);
976 if( nTitleHeight <= 0)
977 nTitleHeight = pFontConfig->GetDefaultHeightFor( FONT_OUTLINE + nFontGroup * FONT_PER_GROUP, eLanguage);
978 if( nListHeight <= 0)
979 nListHeight = pFontConfig->GetDefaultHeightFor( FONT_LIST + nFontGroup * FONT_PER_GROUP, eLanguage);
980 if( nLabelHeight <= 0)
981 nLabelHeight = pFontConfig->GetDefaultHeightFor( FONT_CAPTION + nFontGroup * FONT_PER_GROUP, eLanguage);
982 if( nIndexHeight <= 0)
983 nIndexHeight = pFontConfig->GetDefaultHeightFor( FONT_INDEX + nFontGroup * FONT_PER_GROUP, eLanguage);
984
985 aDocOnlyCB.Enable(sal_False);
986 }
987 else
988 {
989 SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
990 const SvxFontItem& rFont = !nFontGroup ? pColl->GetFont() :
991 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
992 sShellStd = sStdBackup = rFont.GetFamilyName();
993
994 sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
995 nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONTSIZE :
996 FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE );
997 const SvxFontHeightItem& rFontHeightStandard = (const SvxFontHeightItem& )pColl->GetFmtAttr(nFontHeightWhich);
998 nStandardHeight = (sal_Int32)rFontHeightStandard.GetHeight();
999
1000 pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_HEADLINE_BASE);
1001 const SvxFontItem& rFontHL = !nFontGroup ? pColl->GetFont() :
1002 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
1003 sShellTitle = sOutBackup = rFontHL.GetFamilyName();
1004
1005 const SvxFontHeightItem& rFontHeightTitle = (const SvxFontHeightItem&)pColl->GetFmtAttr( nFontHeightWhich, sal_True );
1006 nTitleHeight = (sal_Int32)rFontHeightTitle.GetHeight();
1007
1008 sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
1009 nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONT :
1010 FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
1011 pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_NUMBUL_BASE);
1012 const SvxFontItem& rFontLS = !nFontGroup ? pColl->GetFont() :
1013 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
1014 bListDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1015 sShellList = sListBackup = rFontLS.GetFamilyName();
1016
1017 const SvxFontHeightItem& rFontHeightList = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
1018 nListHeight = (sal_Int32)rFontHeightList.GetHeight();
1019 bListHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1020
1021
1022 pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_LABEL);
1023 bLabelDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1024 const SvxFontItem& rFontCP = !nFontGroup ? pColl->GetFont() :
1025 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
1026 sShellLabel = sCapBackup = rFontCP.GetFamilyName();
1027 const SvxFontHeightItem& rFontHeightLabel = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
1028 nLabelHeight = (sal_Int32)rFontHeightLabel.GetHeight();
1029 bLabelHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1030
1031 pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_REGISTER_BASE);
1032 bIdxDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1033 const SvxFontItem& rFontIDX = !nFontGroup ? pColl->GetFont() :
1034 FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
1035 sShellIndex = sIdxBackup = rFontIDX.GetFamilyName();
1036 const SvxFontHeightItem& rFontHeightIndex = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
1037 nIndexHeight = (sal_Int32)rFontHeightIndex.GetHeight();
1038 bIndexHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
1039 }
1040 aStandardBox.SetText(sStdBackup );
1041 aTitleBox .SetText(sOutBackup );
1042 aListBox .SetText(sListBackup);
1043 aLabelBox .SetText(sCapBackup );
1044 aIdxBox .SetText(sIdxBackup );
1045
1046 FontInfo aFontInfo( pFontList->Get(sStdBackup, sStdBackup) );
1047 aStandardHeightLB.Fill( &aFontInfo, pFontList );
1048 aFontInfo = pFontList->Get(sOutBackup, sOutBackup );
1049 aTitleHeightLB.Fill( &aFontInfo, pFontList );
1050 aFontInfo = pFontList->Get(sListBackup,sListBackup);
1051 aListHeightLB.Fill( &aFontInfo, pFontList );
1052 aFontInfo = pFontList->Get(sCapBackup, sCapBackup );
1053 aLabelHeightLB.Fill( &aFontInfo, pFontList );
1054 aFontInfo = pFontList->Get(sIdxBackup, sIdxBackup );
1055 aIndexHeightLB.Fill( &aFontInfo, pFontList );
1056
1057 aStandardHeightLB.SetValue( CalcToPoint( nStandardHeight, SFX_MAPUNIT_TWIP, 10 ) );
1058 aTitleHeightLB. SetValue( CalcToPoint( nTitleHeight , SFX_MAPUNIT_TWIP, 10 ) );
1059 aListHeightLB. SetValue( CalcToPoint( nListHeight , SFX_MAPUNIT_TWIP, 10 ) );
1060 aLabelHeightLB. SetValue( CalcToPoint( nLabelHeight , SFX_MAPUNIT_TWIP, 10 ));
1061 aIndexHeightLB. SetValue( CalcToPoint( nIndexHeight , SFX_MAPUNIT_TWIP, 10 ));
1062
1063 aStandardBox.SaveValue();
1064 aTitleBox .SaveValue();
1065 aListBox .SaveValue();
1066 aLabelBox .SaveValue();
1067 aIdxBox .SaveValue();
1068
1069 aStandardHeightLB.SaveValue();
1070 aTitleHeightLB. SaveValue();
1071 aListHeightLB. SaveValue();
1072 aLabelHeightLB. SaveValue();
1073 aIndexHeightLB. SaveValue();
1074 }
1075
1076 /*-----------------07.09.96 12.28-------------------
1077
1078 --------------------------------------------------*/
1079
1080
IMPL_LINK(SwStdFontTabPage,StandardHdl,PushButton *,EMPTYARG)1081 IMPL_LINK( SwStdFontTabPage, StandardHdl, PushButton *, EMPTYARG )
1082 {
1083 sal_uInt8 nFontOffset = nFontGroup * FONT_PER_GROUP;
1084 aStandardBox.SetText(SwStdFontConfig::GetDefaultFor(FONT_STANDARD + nFontOffset, eLanguage));
1085 aTitleBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_OUTLINE + nFontOffset, eLanguage));
1086 aListBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_LIST + nFontOffset, eLanguage));
1087 aLabelBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_CAPTION + nFontOffset, eLanguage));
1088 aIdxBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_INDEX + nFontOffset, eLanguage));
1089
1090 aStandardBox.SaveValue();
1091 aTitleBox .SaveValue();
1092 aListBox .SaveValue();
1093 aLabelBox .SaveValue();
1094 aIdxBox .SaveValue();
1095
1096 aStandardHeightLB.SetValue( CalcToPoint(
1097 SwStdFontConfig::GetDefaultHeightFor(FONT_STANDARD + nFontOffset, eLanguage),
1098 SFX_MAPUNIT_TWIP, 10 ) );
1099 aTitleHeightLB .SetValue(CalcToPoint(
1100 SwStdFontConfig::GetDefaultHeightFor(FONT_OUTLINE +
1101 nFontOffset, eLanguage), SFX_MAPUNIT_TWIP, 10 ));
1102 aListHeightLB .SetValue(CalcToPoint(
1103 SwStdFontConfig::GetDefaultHeightFor(FONT_LIST + nFontOffset, eLanguage),
1104 SFX_MAPUNIT_TWIP, 10 ));
1105 aLabelHeightLB .SetValue(CalcToPoint(
1106 SwStdFontConfig::GetDefaultHeightFor(FONT_CAPTION + nFontOffset, eLanguage),
1107 SFX_MAPUNIT_TWIP, 10 ));
1108 aIndexHeightLB .SetValue(CalcToPoint(
1109 SwStdFontConfig::GetDefaultHeightFor(FONT_INDEX + nFontOffset, eLanguage),
1110 SFX_MAPUNIT_TWIP, 10 ));
1111
1112 return 0;
1113 }
1114 /*-----------------17.01.97 15.43-------------------
1115
1116 --------------------------------------------------*/
1117
IMPL_LINK(SwStdFontTabPage,ModifyHdl,ComboBox *,pBox)1118 IMPL_LINK( SwStdFontTabPage, ModifyHdl, ComboBox*, pBox )
1119 {
1120 if(pBox == &aStandardBox)
1121 {
1122 String sEntry = pBox->GetText();
1123 if(bSetListDefault && bListDefault)
1124 aListBox.SetText(sEntry);
1125 if(bSetLabelDefault && bLabelDefault)
1126 aLabelBox.SetText(sEntry);
1127 if(bSetIdxDefault && bIdxDefault)
1128 aIdxBox.SetText(sEntry);
1129 }
1130 else if(pBox == &aListBox)
1131 {
1132 bSetListDefault = sal_False;
1133 }
1134 else if(pBox == &aLabelBox)
1135 {
1136 bSetLabelDefault = sal_False;
1137 }
1138 else if(pBox == &aIdxBox)
1139 {
1140 bSetIdxDefault = sal_False;
1141 }
1142 return 0;
1143 }
1144
1145 /*-- 11.10.2005 15:11:23---------------------------------------------------
1146
1147 -----------------------------------------------------------------------*/
IMPL_LINK(SwStdFontTabPage,ModifyHeightHdl,FontSizeBox *,pBox)1148 IMPL_LINK( SwStdFontTabPage, ModifyHeightHdl, FontSizeBox*, pBox )
1149 {
1150 if(pBox == &aStandardHeightLB)
1151 {
1152 sal_Int64 nValue = pBox->GetValue(FUNIT_TWIP);
1153 if(bSetListHeightDefault && bListHeightDefault)
1154 aListHeightLB.SetValue(nValue, FUNIT_TWIP);
1155 if(bSetLabelHeightDefault && bLabelHeightDefault)
1156 aLabelHeightLB.SetValue(nValue, FUNIT_TWIP);
1157 if(bSetIndexHeightDefault && bIndexHeightDefault)
1158 aIndexHeightLB.SetValue(nValue, FUNIT_TWIP);
1159 }
1160 else if(pBox == &aListHeightLB)
1161 {
1162 bSetListHeightDefault = sal_False;
1163 }
1164 else if(pBox == &aLabelHeightLB)
1165 {
1166 bSetLabelHeightDefault = sal_False;
1167 }
1168 else if(pBox == &aIndexHeightLB)
1169 {
1170 bSetIndexHeightDefault = sal_False;
1171 }
1172 return 0;
1173 }
1174
1175 /*-- 28.09.2005 13:22:36---------------------------------------------------
1176
1177 -----------------------------------------------------------------------*/
IMPL_LINK(SwStdFontTabPage,LoseFocusHdl,ComboBox *,pBox)1178 IMPL_LINK( SwStdFontTabPage, LoseFocusHdl, ComboBox*, pBox )
1179 {
1180 FontSizeBox* pHeightLB = 0;
1181 String sEntry = pBox->GetText();
1182 if(pBox == &aStandardBox)
1183 {
1184 pHeightLB = &aStandardHeightLB;
1185 }
1186 else if(pBox == &aTitleBox)
1187 {
1188 pHeightLB = &aTitleHeightLB;
1189 }
1190 else if(pBox == &aListBox)
1191 {
1192 pHeightLB = &aListHeightLB;
1193 }
1194 else if(pBox == &aLabelBox)
1195 {
1196 pHeightLB = &aLabelHeightLB;
1197 }
1198 else /*if(pBox == &aIdxBox)*/
1199 {
1200 pHeightLB = &aIndexHeightLB;
1201 }
1202 FontInfo aFontInfo( pFontList->Get(sEntry, sEntry) );
1203 pHeightLB->Fill( &aFontInfo, pFontList );
1204
1205 return 0;
1206 }
1207
1208
PageCreated(SfxAllItemSet aSet)1209 void SwStdFontTabPage::PageCreated (SfxAllItemSet aSet)
1210 {
1211 SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt16Item, SID_FONTMODE_TYPE, sal_False);
1212 if (pFlagItem)
1213 SetFontMode(sal::static_int_cast< sal_uInt8, sal_uInt16>( pFlagItem->GetValue()));
1214 }
1215 /*-----------------18.01.97 12.14-------------------
1216 Optionen Tabelle
1217 --------------------------------------------------*/
1218
SwTableOptionsTabPage(Window * pParent,const SfxItemSet & rSet)1219 SwTableOptionsTabPage::SwTableOptionsTabPage( Window* pParent, const SfxItemSet& rSet ) :
1220 SfxTabPage(pParent, SW_RES(TP_OPTTABLE_PAGE), rSet),
1221 aTableFL (this, SW_RES(FL_TABLE )),
1222 aHeaderCB (this, SW_RES(CB_HEADER )),
1223 aRepeatHeaderCB (this, SW_RES(CB_REPEAT_HEADER )),
1224 aDontSplitCB (this, SW_RES(CB_DONT_SPLIT )),
1225 aBorderCB (this, SW_RES(CB_BORDER )),
1226
1227 aSeparatorFL (this, SW_RES(FL_TABLE_SEPARATOR)),
1228
1229 aTableInsertFL (this, SW_RES(FL_TABLE_INSERT )),
1230 aNumFormattingCB(this, SW_RES(CB_NUMFORMATTING )),
1231 aNumFmtFormattingCB(this, SW_RES(CB_NUMFMT_FORMATTING )),
1232 aNumAlignmentCB (this, SW_RES(CB_NUMALIGNMENT )),
1233
1234 aMoveFL( this, SW_RES(FL_MOVE )),
1235 aMoveFT( this, SW_RES(FT_MOVE )),
1236 aRowMoveFT( this, SW_RES(FT_ROWMOVE )),
1237 aRowMoveMF( this, SW_RES(MF_ROWMOVE )),
1238 aColMoveFT( this, SW_RES(FT_COLMOVE )),
1239 aColMoveMF( this, SW_RES(MF_COLMOVE )),
1240
1241 aInsertFT( this, SW_RES(FT_INSERT )),
1242 aRowInsertFT( this, SW_RES(FT_ROWINSERT)),
1243 aRowInsertMF( this, SW_RES(MF_ROWINSERT)),
1244 aColInsertFT( this, SW_RES(FT_COLINSERT)),
1245 aColInsertMF( this, SW_RES(MF_COLINSERT)),
1246
1247 aHandlingFT( this, SW_RES(FT_HANDLING )),
1248 aFixRB( this, SW_RES(RB_FIX )),
1249 aFixPropRB( this, SW_RES(RB_FIXPROP )),
1250 aVarRB( this, SW_RES(RB_VAR )),
1251 aFixFT( this, SW_RES(FT_FIX )),
1252 aFixPropFT( this, SW_RES(FT_FIXPROP )),
1253 aVarFT( this, SW_RES(FT_VAR )),
1254 pWrtShell(0),
1255 bHTMLMode(sal_False)
1256 {
1257 FreeResource();
1258
1259 Link aLnk(LINK(this, SwTableOptionsTabPage, CheckBoxHdl));
1260 aNumFormattingCB.SetClickHdl(aLnk);
1261 aNumFmtFormattingCB.SetClickHdl(aLnk);
1262 aHeaderCB.SetClickHdl(aLnk);
1263 }
1264
1265 /*-----------------18.01.97 12.43-------------------
1266
1267 --------------------------------------------------*/
1268
~SwTableOptionsTabPage()1269 SwTableOptionsTabPage::~SwTableOptionsTabPage()
1270 {
1271 }
1272
1273 /*-----------------18.01.97 12.43-------------------
1274
1275 --------------------------------------------------*/
1276
Create(Window * pParent,const SfxItemSet & rAttrSet)1277 SfxTabPage* SwTableOptionsTabPage::Create( Window* pParent,
1278 const SfxItemSet& rAttrSet )
1279 {
1280 return new SwTableOptionsTabPage(pParent, rAttrSet );
1281 }
1282
1283 /*-----------------18.01.97 12.42-------------------
1284
1285 --------------------------------------------------*/
1286
FillItemSet(SfxItemSet &)1287 sal_Bool SwTableOptionsTabPage::FillItemSet( SfxItemSet& )
1288 {
1289 sal_Bool bRet = sal_False;
1290 SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
1291
1292 if(aRowMoveMF.IsModified())
1293 pModOpt->SetTblHMove( (sal_uInt16)aRowMoveMF.Denormalize( aRowMoveMF.GetValue(FUNIT_TWIP)));
1294
1295 if(aColMoveMF.IsModified())
1296 pModOpt->SetTblVMove( (sal_uInt16)aColMoveMF.Denormalize( aColMoveMF.GetValue(FUNIT_TWIP)));
1297
1298 if(aRowInsertMF.IsModified())
1299 pModOpt->SetTblHInsert((sal_uInt16)aRowInsertMF.Denormalize( aRowInsertMF.GetValue(FUNIT_TWIP)));
1300
1301 if(aColInsertMF.IsModified())
1302 pModOpt->SetTblVInsert((sal_uInt16)aColInsertMF.Denormalize( aColInsertMF.GetValue(FUNIT_TWIP)));
1303
1304 TblChgMode eMode;
1305 if(aFixRB.IsChecked())
1306 eMode = TBLFIX_CHGABS;
1307 else if(aFixPropRB.IsChecked())
1308 eMode = TBLFIX_CHGPROP;
1309 else
1310 eMode = TBLVAR_CHGABS;
1311 if(eMode != pModOpt->GetTblMode())
1312 {
1313 pModOpt->SetTblMode(eMode);
1314 // der Tabellen-Tastatur-Modus hat sich geaendert, das soll
1315 // jetzt auch die aktuelle Tabelle erfahren
1316 if(pWrtShell && nsSelectionType::SEL_TBL & pWrtShell->GetSelectionType())
1317 {
1318 pWrtShell->SetTblChgMode(eMode);
1319 static sal_uInt16 __READONLY_DATA aInva[] =
1320 { FN_TABLE_MODE_FIX,
1321 FN_TABLE_MODE_FIX_PROP,
1322 FN_TABLE_MODE_VARIABLE,
1323 0
1324 };
1325 pWrtShell->GetView().GetViewFrame()->GetBindings().Invalidate( aInva );
1326 }
1327
1328 bRet = sal_True;
1329 }
1330
1331 SwInsertTableOptions aInsOpts( 0, 0 );
1332
1333 if (aHeaderCB.IsChecked())
1334 aInsOpts.mnInsMode |= tabopts::HEADLINE;
1335
1336 if (aRepeatHeaderCB.IsEnabled() )
1337 aInsOpts.mnRowsToRepeat = aRepeatHeaderCB.IsChecked()? 1 : 0;
1338
1339 if (!aDontSplitCB.IsChecked())
1340 aInsOpts.mnInsMode |= tabopts::SPLIT_LAYOUT;
1341
1342 if (aBorderCB.IsChecked())
1343 aInsOpts.mnInsMode |= tabopts::DEFAULT_BORDER;
1344
1345 if (aHeaderCB.GetSavedValue() != aHeaderCB.GetState() ||
1346 aRepeatHeaderCB.GetSavedValue() != aRepeatHeaderCB.GetState() ||
1347 aDontSplitCB.GetSavedValue() != aDontSplitCB.GetState() ||
1348 aBorderCB.GetSavedValue() != aBorderCB.GetState())
1349 {
1350 pModOpt->SetInsTblFlags(bHTMLMode, aInsOpts);
1351 }
1352
1353 if (aNumFormattingCB.GetSavedValue() != aNumFormattingCB.GetState())
1354 {
1355 pModOpt->SetInsTblFormatNum(bHTMLMode, aNumFormattingCB.IsChecked());
1356 bRet = sal_True;
1357 }
1358
1359 if (aNumFmtFormattingCB.GetSavedValue() != aNumFmtFormattingCB.GetState())
1360 {
1361 pModOpt->SetInsTblChangeNumFormat(bHTMLMode, aNumFmtFormattingCB.IsChecked());
1362 bRet = sal_True;
1363 }
1364
1365 if (aNumAlignmentCB.GetSavedValue() != aNumAlignmentCB.GetState())
1366 {
1367 pModOpt->SetInsTblAlignNum(bHTMLMode, aNumAlignmentCB.IsChecked());
1368 bRet = sal_True;
1369 }
1370
1371 return bRet;
1372 }
1373 /*-----------------18.01.97 12.42-------------------
1374
1375 --------------------------------------------------*/
Reset(const SfxItemSet & rSet)1376 void SwTableOptionsTabPage::Reset( const SfxItemSet& rSet)
1377 {
1378 const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
1379 if ( rSet.GetItemState( SID_ATTR_METRIC ) >= SFX_ITEM_AVAILABLE )
1380 {
1381 const SfxUInt16Item& rItem = (SfxUInt16Item&)rSet.Get( SID_ATTR_METRIC );
1382 FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
1383 ::SetFieldUnit( aRowMoveMF, eFieldUnit );
1384 ::SetFieldUnit( aColMoveMF, eFieldUnit );
1385 ::SetFieldUnit( aRowInsertMF, eFieldUnit );
1386 ::SetFieldUnit( aColInsertMF, eFieldUnit );
1387 }
1388
1389 aRowMoveMF .SetValue(aRowMoveMF.Normalize(pModOpt->GetTblHMove()), FUNIT_TWIP);
1390 aColMoveMF .SetValue(aColMoveMF.Normalize(pModOpt->GetTblVMove()), FUNIT_TWIP);
1391 aRowInsertMF.SetValue(aRowInsertMF.Normalize(pModOpt->GetTblHInsert()), FUNIT_TWIP);
1392 aColInsertMF.SetValue(aColInsertMF.Normalize(pModOpt->GetTblVInsert()), FUNIT_TWIP);
1393
1394 switch(pModOpt->GetTblMode())
1395 {
1396 case TBLFIX_CHGABS: aFixRB.Check(); break;
1397 case TBLFIX_CHGPROP: aFixPropRB.Check(); break;
1398 case TBLVAR_CHGABS: aVarRB.Check(); break;
1399 }
1400 const SfxPoolItem* pItem;
1401 if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem))
1402 {
1403 bHTMLMode = 0 != (((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON);
1404 }
1405
1406 //bestimmte Controls fuer HTML verstecken
1407 if(bHTMLMode)
1408 {
1409 /* Point aPos(aCaptionFL.GetPosPixel());
1410 long nYDiff = aTableFL.GetPosPixel().Y() - aPos.Y();
1411 aTableFL.SetPosPixel(aPos);
1412
1413 aPos = aHeaderCB.GetPosPixel();
1414 aPos.Y() -= nYDiff;
1415 aHeaderCB.SetPosPixel(aPos);
1416
1417 aPos = aRepeatHeaderCB.GetPosPixel();
1418 aPos.Y() -= nYDiff;
1419 aRepeatHeaderCB.SetPosPixel(aPos);
1420
1421 aPos = aDontSplitCB.GetPosPixel(); // hier muss eine Luecke geschlossen werden
1422 aPos.Y() -= nYDiff;
1423 aBorderCB.SetPosPixel(aPos);
1424
1425 aPos = aTableInsertFL.GetPosPixel();
1426 aPos.Y() -= nYDiff;
1427 aTableInsertFL.SetPosPixel(aPos);
1428
1429 aPos = aNumFormattingCB.GetPosPixel();
1430 aPos.Y() -= nYDiff;
1431 aNumFormattingCB.SetPosPixel(aPos);
1432
1433 aPos = aNumFmtFormattingCB.GetPosPixel();
1434 aPos.Y() -= nYDiff;
1435 aNumFmtFormattingCB.SetPosPixel(aPos);
1436
1437 aPos = aNumAlignmentCB.GetPosPixel();
1438 aPos.Y() -= nYDiff;
1439 aNumAlignmentCB.SetPosPixel(aPos);
1440
1441 aCaptionFL.Hide();
1442 aCaptionCB.Hide();
1443 aCaptionFT.Hide();
1444 aCaptionPB.Hide();
1445 */
1446 aDontSplitCB.Hide();
1447 }
1448
1449 SwInsertTableOptions aInsOpts = pModOpt->GetInsTblFlags(bHTMLMode);
1450 sal_uInt16 nInsTblFlags = aInsOpts.mnInsMode;
1451
1452 aHeaderCB.Check(0 != (nInsTblFlags & tabopts::HEADLINE));
1453 aRepeatHeaderCB.Check(aInsOpts.mnRowsToRepeat > 0);
1454 aDontSplitCB.Check(!(nInsTblFlags & tabopts::SPLIT_LAYOUT));
1455 aBorderCB.Check(0 != (nInsTblFlags & tabopts::DEFAULT_BORDER));
1456
1457 aNumFormattingCB.Check(pModOpt->IsInsTblFormatNum(bHTMLMode));
1458 aNumFmtFormattingCB.Check(pModOpt->IsInsTblChangeNumFormat(bHTMLMode));
1459 aNumAlignmentCB.Check(pModOpt->IsInsTblAlignNum(bHTMLMode));
1460
1461 aHeaderCB.SaveValue();
1462 aRepeatHeaderCB.SaveValue();
1463 aDontSplitCB.SaveValue();
1464 aBorderCB.SaveValue();
1465 aNumFormattingCB.SaveValue();
1466 aNumFmtFormattingCB.SaveValue();
1467 aNumAlignmentCB.SaveValue();
1468
1469 CheckBoxHdl(0);
1470 }
1471 /*-----------------18.01.97 12.42-------------------
1472
1473 --------------------------------------------------*/
IMPL_LINK(SwTableOptionsTabPage,CheckBoxHdl,CheckBox *,EMPTYARG)1474 IMPL_LINK(SwTableOptionsTabPage, CheckBoxHdl, CheckBox*, EMPTYARG)
1475 {
1476 aNumFmtFormattingCB.Enable(aNumFormattingCB.IsChecked());
1477 aNumAlignmentCB.Enable(aNumFormattingCB.IsChecked());
1478 aRepeatHeaderCB.Enable(aHeaderCB.IsChecked());
1479 return 0;
1480 }
1481
PageCreated(SfxAllItemSet aSet)1482 void SwTableOptionsTabPage::PageCreated (SfxAllItemSet aSet)
1483 {
1484 SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,sal_False);
1485 if (pWrtSh)
1486 SetWrtShell(pWrtSh->GetValue());
1487 }
1488 /* */
1489
1490 /*-----------------31.10.97 17:55-------------------
1491 TabPage fuer ShadowCrsr
1492 --------------------------------------------------*/
1493
SwShdwCrsrOptionsTabPage(Window * pParent,const SfxItemSet & rSet)1494 SwShdwCrsrOptionsTabPage::SwShdwCrsrOptionsTabPage( Window* pParent,
1495 const SfxItemSet& rSet )
1496 : SfxTabPage(pParent, SW_RES(TP_OPTSHDWCRSR), rSet),
1497 aUnprintFL ( this, SW_RES( FL_NOPRINT ) ),
1498 aParaCB ( this, SW_RES( CB_PARA ) ),
1499 aSHyphCB ( this, SW_RES( CB_SHYPH ) ),
1500 aSpacesCB ( this, SW_RES( CB_SPACE ) ),
1501 aHSpacesCB ( this, SW_RES( CB_HSPACE ) ),
1502 aTabCB ( this, SW_RES( CB_TAB ) ),
1503 aBreakCB ( this, SW_RES( CB_BREAK ) ),
1504 aCharHiddenCB ( this, SW_RES( CB_CHAR_HIDDEN ) ),
1505 aFldHiddenCB ( this, SW_RES( CB_FLD_HIDDEN ) ),
1506 aFldHiddenParaCB ( this, SW_RES( CB_FLD_HIDDEN_PARA ) ),
1507
1508 aSeparatorFL( this, SW_RES( FL_SEPARATOR_SHDW)),
1509
1510 aFlagFL( this, SW_RES( FL_SHDWCRSFLAG )),
1511 aOnOffCB( this, SW_RES( CB_SHDWCRSONOFF )),
1512
1513 aFillModeFT( this, SW_RES( FT_SHDWCRSFILLMODE )),
1514 aFillMarginRB( this, SW_RES( RB_SHDWCRSFILLMARGIN )),
1515 aFillIndentRB( this, SW_RES( RB_SHDWCRSFILLINDENT )),
1516 aFillTabRB( this, SW_RES( RB_SHDWCRSFILLTAB )),
1517 aFillSpaceRB( this, SW_RES( RB_SHDWCRSFILLSPACE )),
1518 aCrsrOptFL ( this, SW_RES( FL_CRSR_OPT)),
1519 aCrsrInProtCB( this, SW_RES( CB_ALLOW_IN_PROT )),
1520 m_aLayoutOptionsFL( this, SW_RES( FL_LAYOUT_OPTIONS ) ),
1521 m_aMathBaselineAlignmentCB( this, SW_RES( CB_MATH_BASELINE_ALIGNMENT ) ),
1522 m_pWrtShell( NULL )
1523 {
1524 FreeResource();
1525 const SfxPoolItem* pItem = 0;
1526
1527 SwShadowCursorItem aOpt;
1528 if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem ))
1529 aOpt = *(SwShadowCursorItem*)pItem;
1530 aOnOffCB.Check( aOpt.IsOn() );
1531
1532 sal_uInt8 eMode = aOpt.GetMode();
1533 aFillIndentRB.Check( FILL_INDENT == eMode );
1534 aFillMarginRB.Check( FILL_MARGIN == eMode );
1535 aFillTabRB.Check( FILL_TAB == eMode );
1536 aFillSpaceRB.Check( FILL_SPACE == eMode );
1537
1538 if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
1539 && ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
1540 {
1541 aTabCB .Hide();
1542 aCharHiddenCB.Hide();
1543 aFldHiddenCB .Hide();
1544 aFldHiddenParaCB.Hide();
1545 aBreakCB.SetPosPixel(aTabCB.GetPosPixel());
1546 aFlagFL .Hide();
1547 aOnOffCB .Hide();
1548 aFillModeFT .Hide();
1549 aFillMarginRB .Hide();
1550 aFillIndentRB .Hide();
1551 aFillTabRB .Hide();
1552 aFillSpaceRB .Hide();
1553 aCrsrOptFL .Hide();
1554 aCrsrInProtCB .Hide();
1555 aSeparatorFL.Hide();
1556 long nWidth = aFlagFL.GetSizePixel().Width() + aFlagFL.GetPosPixel().X()
1557 - aUnprintFL.GetPosPixel().X();
1558 Size aSize(aUnprintFL.GetSizePixel());
1559 aSize.Width() = nWidth;
1560 aUnprintFL.SetSizePixel(aSize);
1561 }
1562 }
1563
~SwShdwCrsrOptionsTabPage()1564 SwShdwCrsrOptionsTabPage::~SwShdwCrsrOptionsTabPage()
1565 {
1566 }
1567
1568
Create(Window * pParent,const SfxItemSet & rSet)1569 SfxTabPage* SwShdwCrsrOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet )
1570 {
1571 return new SwShdwCrsrOptionsTabPage( pParent, rSet );
1572 }
1573
1574
PageCreated(SfxAllItemSet aSet)1575 void SwShdwCrsrOptionsTabPage::PageCreated( SfxAllItemSet aSet )
1576 {
1577 SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,sal_False);
1578 if (pWrtSh)
1579 SetWrtShell(pWrtSh->GetValue());
1580 }
1581
1582
FillItemSet(SfxItemSet & rSet)1583 sal_Bool SwShdwCrsrOptionsTabPage::FillItemSet( SfxItemSet& rSet )
1584 {
1585 SwShadowCursorItem aOpt;
1586 aOpt.SetOn( aOnOffCB.IsChecked() );
1587
1588 sal_uInt8 eMode;
1589 if( aFillIndentRB.IsChecked() )
1590 eMode= FILL_INDENT;
1591 else if( aFillMarginRB.IsChecked() )
1592 eMode = FILL_MARGIN;
1593 else if( aFillTabRB.IsChecked() )
1594 eMode = FILL_TAB;
1595 else
1596 eMode = FILL_SPACE;
1597 aOpt.SetMode( eMode );
1598
1599 sal_Bool bRet = sal_False;
1600 const SfxPoolItem* pItem = 0;
1601 if( SFX_ITEM_SET != rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem )
1602 || ((SwShadowCursorItem&)*pItem) != aOpt )
1603 {
1604 rSet.Put( aOpt );
1605 bRet = sal_True;
1606 }
1607
1608 if ( m_pWrtShell )
1609 {
1610 m_pWrtShell->GetDoc()->set(
1611 IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT,
1612 m_aMathBaselineAlignmentCB.IsChecked() );
1613 bRet |= m_aMathBaselineAlignmentCB.IsChecked() != m_aMathBaselineAlignmentCB.GetSavedValue();
1614 }
1615
1616 if( aCrsrInProtCB.IsChecked() != aCrsrInProtCB.GetSavedValue())
1617 {
1618 rSet.Put(SfxBoolItem(FN_PARAM_CRSR_IN_PROTECTED, aCrsrInProtCB.IsChecked()));
1619 bRet |= sal_True;
1620 }
1621
1622 const SwDocDisplayItem* pOldAttr =
1623 (const SwDocDisplayItem*)GetOldItem(GetItemSet(), FN_PARAM_DOCDISP);
1624
1625 SwDocDisplayItem aDisp;
1626 if(pOldAttr)
1627 aDisp = *pOldAttr;
1628 //
1629 aDisp.bParagraphEnd = aParaCB .IsChecked();
1630 aDisp.bTab = aTabCB .IsChecked();
1631 aDisp.bSpace = aSpacesCB .IsChecked();
1632 aDisp.bNonbreakingSpace = aHSpacesCB .IsChecked();
1633 aDisp.bSoftHyphen = aSHyphCB .IsChecked();
1634 aDisp.bFldHiddenText = aFldHiddenCB .IsChecked();
1635 aDisp.bCharHiddenText = aCharHiddenCB.IsChecked();
1636 aDisp.bShowHiddenPara = aFldHiddenParaCB .IsChecked();
1637 aDisp.bManualBreak = aBreakCB .IsChecked();
1638
1639 bRet |= (!pOldAttr || aDisp != *pOldAttr);
1640 if(bRet)
1641 bRet = 0 != rSet.Put(aDisp);
1642
1643 return bRet;
1644 }
1645
Reset(const SfxItemSet & rSet)1646 void SwShdwCrsrOptionsTabPage::Reset( const SfxItemSet& rSet )
1647 {
1648 const SfxPoolItem* pItem = 0;
1649
1650 SwShadowCursorItem aOpt;
1651 if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem ))
1652 {
1653 aOpt = *(SwShadowCursorItem*)pItem;
1654 }
1655 aOnOffCB.Check( aOpt.IsOn() );
1656
1657 sal_uInt8 eMode = aOpt.GetMode();
1658 aFillIndentRB.Check( FILL_INDENT == eMode );
1659 aFillMarginRB.Check( FILL_MARGIN == eMode );
1660 aFillTabRB.Check( FILL_TAB == eMode );
1661 aFillSpaceRB.Check( FILL_SPACE == eMode );
1662
1663 if ( m_pWrtShell )
1664 {
1665 m_aMathBaselineAlignmentCB.Check( m_pWrtShell->GetDoc()->get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT ) );
1666 m_aMathBaselineAlignmentCB.SaveValue();
1667 }
1668 else
1669 {
1670 m_aMathBaselineAlignmentCB.Disable();
1671 }
1672
1673 if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_CRSR_IN_PROTECTED, sal_False, &pItem ))
1674 {
1675 aCrsrInProtCB.Check(((const SfxBoolItem*)pItem)->GetValue());
1676 }
1677 aCrsrInProtCB.SaveValue();
1678
1679 const SwDocDisplayItem* pDocDisplayAttr = 0;
1680
1681 rSet.GetItemState( FN_PARAM_DOCDISP, sal_False, (const SfxPoolItem**)&pDocDisplayAttr );
1682 if(pDocDisplayAttr)
1683 {
1684 aParaCB .Check (pDocDisplayAttr->bParagraphEnd );
1685 aTabCB .Check (pDocDisplayAttr->bTab );
1686 aSpacesCB .Check (pDocDisplayAttr->bSpace );
1687 aHSpacesCB .Check (pDocDisplayAttr->bNonbreakingSpace );
1688 aSHyphCB .Check (pDocDisplayAttr->bSoftHyphen );
1689 aCharHiddenCB.Check (pDocDisplayAttr->bCharHiddenText );
1690 aFldHiddenCB .Check (pDocDisplayAttr->bFldHiddenText );
1691 aFldHiddenParaCB.Check (pDocDisplayAttr->bShowHiddenPara );
1692 aBreakCB .Check (pDocDisplayAttr->bManualBreak );
1693 }
1694 }
1695
1696 /*-----------------31.10.97 17:55-------------------
1697 TabPage fuer Redlining
1698 --------------------------------------------------*/
1699
1700 struct CharAttr
1701 {
1702 sal_uInt16 nItemId;
1703 sal_uInt16 nAttr;
1704 };
1705
1706 // Editieren entspricht Einfuegen-Attributen
1707 static CharAttr __FAR_DATA aRedlineAttr[] =
1708 {
1709 { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_NOT_MAPPED },
1710 { SID_ATTR_CHAR_WEIGHT, WEIGHT_BOLD },
1711 { SID_ATTR_CHAR_POSTURE, ITALIC_NORMAL },
1712 { SID_ATTR_CHAR_UNDERLINE, UNDERLINE_SINGLE },
1713 { SID_ATTR_CHAR_UNDERLINE, UNDERLINE_DOUBLE },
1714 { SID_ATTR_CHAR_STRIKEOUT, STRIKEOUT_SINGLE },
1715 { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_VERSALIEN },
1716 { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_GEMEINE },
1717 { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_KAPITAELCHEN },
1718 { SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_TITEL },
1719 { SID_ATTR_BRUSH, 0 }
1720 };
1721 // Items from aRedlineAttr relevant for InsertAttr: strikethrough is
1722 // not used
1723 static sal_uInt16 aInsertAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
1724
1725 // Items from aRedlineAttr relevant for DeleteAttr: underline and
1726 // double underline is not used
1727 static sal_uInt16 aDeletedAttrMap[] = { 0, 1, 2, 5, 6, 7, 8, 9, 10 };
1728
1729 // Items from aRedlineAttr relevant for ChangeAttr: strikethrough is
1730 // not used
1731 static sal_uInt16 aChangedAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
1732
1733 /*-----------------------------------------------------------------------
1734 Beschreibung: Markierungsvorschau
1735 -----------------------------------------------------------------------*/
1736
SwMarkPreview(Window * pParent,const ResId & rResID)1737 SwMarkPreview::SwMarkPreview( Window *pParent, const ResId& rResID ) :
1738
1739 Window(pParent, rResID),
1740 m_aTransCol( COL_TRANSPARENT ),
1741 m_aMarkCol( COL_LIGHTRED ),
1742 nMarkPos(0)
1743
1744 {
1745 InitColors();
1746 SetMapMode(MAP_PIXEL);
1747
1748 const Size aSz(GetOutputSizePixel());
1749
1750 // Seite
1751 aPage.SetSize(Size(aSz.Width() - 3, aSz.Height() - 3));
1752
1753 sal_uLong nOutWPix = aPage.GetWidth();
1754 sal_uLong nOutHPix = aPage.GetHeight();
1755
1756 // PrintArea
1757 sal_uLong nLBorder = 8;
1758 sal_uLong nRBorder = 8;
1759 sal_uLong nTBorder = 4;
1760 sal_uLong nBBorder = 4;
1761
1762 aLeftPagePrtArea = Rectangle(Point(nLBorder, nTBorder), Point((nOutWPix - 1) - nRBorder, (nOutHPix - 1) - nBBorder));
1763 sal_uInt16 nWidth = (sal_uInt16)aLeftPagePrtArea.GetWidth();
1764 sal_uInt16 nKorr = (nWidth & 1) != 0 ? 0 : 1;
1765 aLeftPagePrtArea.SetSize(Size(nWidth / 2 - (nLBorder + nRBorder) / 2 + nKorr, aLeftPagePrtArea.GetHeight()));
1766
1767 aRightPagePrtArea = aLeftPagePrtArea;
1768 aRightPagePrtArea.Move(aLeftPagePrtArea.GetWidth() + nLBorder + nRBorder + 1, 0);
1769 }
1770
~SwMarkPreview()1771 SwMarkPreview::~SwMarkPreview()
1772 {
1773 }
1774
InitColors(void)1775 void SwMarkPreview::InitColors( void )
1776 {
1777 // m_aTransCol and m_aMarkCol are _not_ changed because they are set from outside!
1778
1779 const StyleSettings& rSettings = GetSettings().GetStyleSettings();
1780 m_aBgCol = Color( rSettings.GetWindowColor() );
1781
1782 sal_Bool bHC = rSettings.GetHighContrastMode();
1783 m_aLineCol = bHC? SwViewOption::GetFontColor() : Color( COL_BLACK );
1784 m_aShadowCol = bHC? m_aBgCol : rSettings.GetShadowColor();
1785 m_aTxtCol = bHC? SwViewOption::GetFontColor() : Color( COL_GRAY );
1786 m_aPrintAreaCol = m_aTxtCol;
1787 }
1788
DataChanged(const DataChangedEvent & rDCEvt)1789 void SwMarkPreview::DataChanged( const DataChangedEvent& rDCEvt )
1790 {
1791 Window::DataChanged( rDCEvt );
1792
1793 if( rDCEvt.GetType() == DATACHANGED_SETTINGS && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
1794 InitColors();
1795 }
1796
Paint(const Rectangle &)1797 void SwMarkPreview::Paint(const Rectangle &/*rRect*/)
1798 {
1799 // Schatten zeichnen
1800 Rectangle aShadow(aPage);
1801 aShadow += Point(3, 3);
1802 DrawRect( aShadow, m_aShadowCol, m_aTransCol );
1803
1804 // Seite zeichnen
1805 DrawRect( aPage, m_aBgCol, m_aLineCol );
1806
1807 // Separator zeichnen
1808 Rectangle aPageSeparator(aPage);
1809 aPageSeparator.SetSize(Size(2, aPageSeparator.GetHeight()));
1810 aPageSeparator.Move(aPage.GetWidth() / 2 - 1, 0);
1811 DrawRect( aPageSeparator, m_aLineCol, m_aTransCol );
1812
1813 PaintPage(aLeftPagePrtArea);
1814 PaintPage(aRightPagePrtArea);
1815
1816 Rectangle aLeftMark(Point(aPage.Left() + 2, aLeftPagePrtArea.Top() + 4), Size(aLeftPagePrtArea.Left() - 4, 2));
1817 Rectangle aRightMark(Point(aRightPagePrtArea.Right() + 2, aRightPagePrtArea.Bottom() - 6), Size(aLeftPagePrtArea.Left() - 4, 2));
1818
1819 switch (nMarkPos)
1820 {
1821 case 1: // Links
1822 aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
1823 break;
1824
1825 case 2: // Rechts
1826 aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
1827 break;
1828
1829 case 3: // Aussen
1830 break;
1831
1832 case 4: // Innen
1833 aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
1834 aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
1835 break;
1836
1837 case 0: // Keine
1838 default:
1839 return;
1840 }
1841 DrawRect( aLeftMark, m_aMarkCol, m_aTransCol );
1842 DrawRect( aRightMark, m_aMarkCol, m_aTransCol );
1843 }
1844
PaintPage(const Rectangle & rRect)1845 void SwMarkPreview::PaintPage(const Rectangle &rRect)
1846 {
1847 // PrintArea zeichnen
1848 DrawRect(rRect, m_aTransCol, m_aPrintAreaCol );
1849
1850 // Testabsatz zeichnen
1851 sal_uLong nLTxtBorder = 4;
1852 sal_uLong nRTxtBorder = 4;
1853 sal_uLong nTTxtBorder = 4;
1854
1855 Rectangle aTextLine = rRect;
1856 aTextLine.SetSize(Size(aTextLine.GetWidth(), 2));
1857 aTextLine.Left() += nLTxtBorder;
1858 aTextLine.Right() -= nRTxtBorder;
1859 aTextLine.Move(0, nTTxtBorder);
1860
1861 sal_Int32 nStep;
1862 sal_uInt16 nLines;
1863
1864 nStep = aTextLine.GetHeight() + 2;
1865 nLines = (sal_uInt16)(rRect.GetHeight() / (aTextLine.GetHeight() + 2)) - 1;
1866
1867 // Text simulieren
1868 //
1869 for (sal_uInt16 i = 0; i < nLines; ++i)
1870 {
1871 if (i == (nLines - 1))
1872 aTextLine.SetSize(Size(aTextLine.GetWidth() / 2, aTextLine.GetHeight()));
1873
1874 if (aPage.IsInside(aTextLine))
1875 DrawRect(aTextLine, m_aTxtCol, m_aTransCol );
1876
1877 aTextLine.Move(0, nStep);
1878 }
1879 aTextLine.Move(0, -nStep);
1880 }
1881
DrawRect(const Rectangle & rRect,const Color & rFillColor,const Color & rLineColor)1882 void SwMarkPreview::DrawRect(const Rectangle &rRect, const Color &rFillColor, const Color &rLineColor)
1883 {
1884 SetFillColor(rFillColor);
1885 SetLineColor(rLineColor);
1886 Window::DrawRect(rRect);
1887 }
1888
1889 namespace
1890 {
lcl_FillRedlineAttrListBox(ListBox & rLB,const AuthorCharAttr & rAttrToSelect,const sal_uInt16 * pAttrMap,const sal_uInt16 nAttrMapSize)1891 void lcl_FillRedlineAttrListBox(
1892 ListBox& rLB, const AuthorCharAttr& rAttrToSelect,
1893 const sal_uInt16* pAttrMap, const sal_uInt16 nAttrMapSize)
1894 {
1895 for (sal_uInt16 i = 0; i != nAttrMapSize; ++i)
1896 {
1897 CharAttr& rAttr(aRedlineAttr[pAttrMap[i]]);
1898 rLB.SetEntryData(i, &rAttr);
1899 if (rAttr.nItemId == rAttrToSelect.nItemId &&
1900 rAttr.nAttr == rAttrToSelect.nAttr)
1901 rLB.SelectEntryPos(i);
1902 }
1903 }
1904 }
1905
SwRedlineOptionsTabPage(Window * pParent,const SfxItemSet & rSet)1906 SwRedlineOptionsTabPage::SwRedlineOptionsTabPage( Window* pParent,
1907 const SfxItemSet& rSet )
1908 : SfxTabPage(pParent, SW_RES(TP_REDLINE_OPT), rSet),
1909
1910 aInsertFL( this, SW_RES( FL_TE )),
1911
1912 aInsertFT( this, SW_RES( FT_CHG_INSERT )),
1913 aInsertAttrFT( this, SW_RES( FT_INS_ATTR )),
1914 aInsertLB( this, SW_RES( LB_INS_ATTR )),
1915 aInsertColorFT( this, SW_RES( FT_INS_COL )),
1916 aInsertColorLB( this, SW_RES( LB_INS_COL )),
1917 aInsertedPreviewWN( this, SW_RES( WIN_INS )),
1918
1919 aDeletedFT( this, SW_RES( FT_CHG_DELETE )),
1920 aDeletedAttrFT( this, SW_RES( FT_DEL_ATTR )),
1921 aDeletedLB( this, SW_RES( LB_DEL_ATTR )),
1922 aDeletedColorFT( this, SW_RES( FT_DEL_COL )),
1923 aDeletedColorLB( this, SW_RES( LB_DEL_COL )),
1924 aDeletedPreviewWN( this, SW_RES( WIN_DEL )),
1925
1926 aChangedFT( this, SW_RES( FT_CHG_CHANGE )),
1927 aChangedAttrFT( this, SW_RES( FT_CHG_ATTR )),
1928 aChangedLB( this, SW_RES( LB_CHG_ATTR )),
1929 aChangedColorFT( this, SW_RES( FT_CHG_COL )),
1930 aChangedColorLB( this, SW_RES( LB_CHG_COL )),
1931 aChangedPreviewWN( this, SW_RES( WIN_CHG )),
1932
1933 aChangedFL ( this, SW_RES( FL_LC )),
1934
1935 aMarkPosFT ( this, SW_RES( FT_MARKPOS )),
1936 aMarkPosLB ( this, SW_RES( LB_MARKPOS )),
1937 aMarkColorFT ( this, SW_RES( FT_LC_COL )),
1938 aMarkColorLB ( this, SW_RES( LB_LC_COL )),
1939 aMarkPreviewWN ( this, SW_RES( WIN_MARK )),
1940
1941 sAuthor ( SW_RES( STR_AUTHOR )),
1942 sNone ( SW_RES( STR_NOTHING ))
1943
1944 {
1945 FreeResource();
1946
1947 for(sal_uInt16 i = 0; i < aInsertLB.GetEntryCount(); i++)
1948 {
1949 String sEntry(aInsertLB.GetEntry(i));
1950 aDeletedLB.InsertEntry(sEntry);
1951 aChangedLB.InsertEntry(sEntry);
1952 };
1953
1954 // remove strikethrough from insert and change and underline + double
1955 // underline from delete
1956 aInsertLB.RemoveEntry(5);
1957 aChangedLB.RemoveEntry(5);
1958 aDeletedLB.RemoveEntry(4);
1959 aDeletedLB.RemoveEntry(3);
1960
1961 Link aLk = LINK(this, SwRedlineOptionsTabPage, AttribHdl);
1962 aInsertLB.SetSelectHdl( aLk );
1963 aDeletedLB.SetSelectHdl( aLk );
1964 aChangedLB.SetSelectHdl( aLk );
1965
1966 aLk = LINK(this, SwRedlineOptionsTabPage, ColorHdl);
1967 aInsertColorLB.SetSelectHdl( aLk );
1968 aDeletedColorLB.SetSelectHdl( aLk );
1969 aChangedColorLB.SetSelectHdl( aLk );
1970
1971 aLk = LINK(this, SwRedlineOptionsTabPage, ChangedMaskPrevHdl);
1972 aMarkPosLB.SetSelectHdl( aLk );
1973 aMarkColorLB.SetSelectHdl( aLk );
1974 //solution: set different accessible name of four color box
1975 aInsertColorLB.SetAccessibleName(::rtl::OUString( aInsertFT.GetDisplayText()) + ::rtl::OUString(aInsertColorFT.GetDisplayText()));
1976 aDeletedColorLB.SetAccessibleName(::rtl::OUString( aDeletedFT.GetDisplayText()) + ::rtl::OUString( aDeletedColorFT.GetDisplayText()));
1977 aChangedColorLB.SetAccessibleName(::rtl::OUString( aChangedFT.GetDisplayText()) + ::rtl::OUString( aChangedColorFT.GetDisplayText()));
1978 aMarkColorLB.SetAccessibleName(::rtl::OUString( aMarkPosFT.GetDisplayText()) + ::rtl::OUString( aMarkColorFT.GetDisplayText()));
1979 }
1980
~SwRedlineOptionsTabPage()1981 SwRedlineOptionsTabPage::~SwRedlineOptionsTabPage()
1982 {
1983 }
1984
Create(Window * pParent,const SfxItemSet & rSet)1985 SfxTabPage* SwRedlineOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet)
1986 {
1987 return new SwRedlineOptionsTabPage( pParent, rSet );
1988 }
1989
FillItemSet(SfxItemSet &)1990 sal_Bool SwRedlineOptionsTabPage::FillItemSet( SfxItemSet& )
1991 {
1992 CharAttr *pAttr;
1993 SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
1994
1995 AuthorCharAttr aInsertedAttr;
1996 AuthorCharAttr aDeletedAttr;
1997 AuthorCharAttr aChangedAttr;
1998
1999 AuthorCharAttr aOldInsertAttr(pOpt->GetInsertAuthorAttr());
2000 AuthorCharAttr aOldDeletedAttr(pOpt->GetDeletedAuthorAttr());
2001 AuthorCharAttr aOldChangedAttr(pOpt->GetFormatAuthorAttr());
2002
2003 ColorData nOldMarkColor = pOpt->GetMarkAlignColor().GetColor();
2004 sal_uInt16 nOldMarkMode = pOpt->GetMarkAlignMode();
2005
2006 sal_uInt16 nPos = aInsertLB.GetSelectEntryPos();
2007 if (nPos != LISTBOX_ENTRY_NOTFOUND)
2008 {
2009 pAttr = (CharAttr *)aInsertLB.GetEntryData(nPos);
2010 aInsertedAttr.nItemId = pAttr->nItemId;
2011 aInsertedAttr.nAttr = pAttr->nAttr;
2012
2013 nPos = aInsertColorLB.GetSelectEntryPos();
2014
2015 switch (nPos)
2016 {
2017 case 0:
2018 aInsertedAttr.nColor = COL_NONE;
2019 break;
2020 case 1:
2021 case LISTBOX_ENTRY_NOTFOUND:
2022 aInsertedAttr.nColor = COL_TRANSPARENT;
2023 break;
2024 default:
2025 aInsertedAttr.nColor = aInsertColorLB.GetEntryColor(nPos).GetColor();
2026 break;
2027 }
2028
2029 pOpt->SetInsertAuthorAttr(aInsertedAttr);
2030 }
2031
2032 nPos = aDeletedLB.GetSelectEntryPos();
2033 if (nPos != LISTBOX_ENTRY_NOTFOUND)
2034 {
2035 pAttr = (CharAttr *)aDeletedLB.GetEntryData(nPos);
2036 aDeletedAttr.nItemId = pAttr->nItemId;
2037 aDeletedAttr.nAttr = pAttr->nAttr;
2038
2039 nPos = aDeletedColorLB.GetSelectEntryPos();
2040
2041 switch (nPos)
2042 {
2043 case 0:
2044 aDeletedAttr.nColor = COL_NONE;
2045 break;
2046 case 1:
2047 case LISTBOX_ENTRY_NOTFOUND:
2048 aDeletedAttr.nColor = COL_TRANSPARENT;
2049 break;
2050 default:
2051 aDeletedAttr.nColor = aDeletedColorLB.GetEntryColor(nPos).GetColor();
2052 break;
2053 }
2054
2055 pOpt->SetDeletedAuthorAttr(aDeletedAttr);
2056 }
2057
2058 nPos = aChangedLB.GetSelectEntryPos();
2059 if (nPos != LISTBOX_ENTRY_NOTFOUND)
2060 {
2061 pAttr = (CharAttr *)aChangedLB.GetEntryData(nPos);
2062 aChangedAttr.nItemId = pAttr->nItemId;
2063 aChangedAttr.nAttr = pAttr->nAttr;
2064
2065 nPos = aChangedColorLB.GetSelectEntryPos();
2066
2067 switch (nPos)
2068 {
2069 case 0:
2070 aChangedAttr.nColor = COL_NONE;
2071 break;
2072 case 1:
2073 case LISTBOX_ENTRY_NOTFOUND:
2074 aChangedAttr.nColor = COL_TRANSPARENT;
2075 break;
2076 default:
2077 aChangedAttr.nColor = aChangedColorLB.GetEntryColor(nPos).GetColor();
2078 break;
2079 }
2080
2081 pOpt->SetFormatAuthorAttr(aChangedAttr);
2082 }
2083
2084 nPos = 0;
2085 switch (aMarkPosLB.GetSelectEntryPos())
2086 {
2087 case 0: nPos = text::HoriOrientation::NONE; break;
2088 case 1: nPos = text::HoriOrientation::LEFT; break;
2089 case 2: nPos = text::HoriOrientation::RIGHT; break;
2090 case 3: nPos = text::HoriOrientation::OUTSIDE; break;
2091 case 4: nPos = text::HoriOrientation::INSIDE; break;
2092 }
2093 pOpt->SetMarkAlignMode(nPos);
2094
2095 pOpt->SetMarkAlignColor(aMarkColorLB.GetSelectEntryColor());
2096
2097 if (!(aInsertedAttr == aOldInsertAttr) ||
2098 !(aDeletedAttr == aOldDeletedAttr) ||
2099 !(aChangedAttr == aOldChangedAttr) ||
2100 nOldMarkColor != pOpt->GetMarkAlignColor().GetColor() ||
2101 nOldMarkMode != pOpt->GetMarkAlignMode())
2102 {
2103 // Alle Dokumente aktualisieren
2104 TypeId aType(TYPE(SwDocShell));
2105 SwDocShell* pDocShell = (SwDocShell*)SfxObjectShell::GetFirst(&aType);
2106
2107 while( pDocShell )
2108 {
2109 pDocShell->GetWrtShell()->UpdateRedlineAttr();
2110 pDocShell = (SwDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType);
2111 }
2112 }
2113
2114 return sal_False;
2115 }
2116
Reset(const SfxItemSet &)2117 void SwRedlineOptionsTabPage::Reset( const SfxItemSet& )
2118 {
2119 const SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
2120
2121 const AuthorCharAttr &rInsertAttr = pOpt->GetInsertAuthorAttr();
2122 const AuthorCharAttr &rDeletedAttr = pOpt->GetDeletedAuthorAttr();
2123 const AuthorCharAttr &rChangedAttr = pOpt->GetFormatAuthorAttr();
2124
2125 // Preview initialisieren
2126 InitFontStyle(aInsertedPreviewWN);
2127 InitFontStyle(aDeletedPreviewWN);
2128 InitFontStyle(aChangedPreviewWN);
2129
2130 // Farblistboxen initialisieren
2131 String sColor;
2132 aInsertColorLB.SetUpdateMode(sal_False);
2133 aDeletedColorLB.SetUpdateMode(sal_False);
2134 aChangedColorLB.SetUpdateMode(sal_False);
2135 aMarkColorLB.SetUpdateMode(sal_False);
2136
2137 aInsertColorLB.InsertEntry(sNone);
2138 aDeletedColorLB.InsertEntry(sNone);
2139 aChangedColorLB.InsertEntry(sNone);
2140
2141 aInsertColorLB.InsertEntry(sAuthor);
2142 aDeletedColorLB.InsertEntry(sAuthor);
2143 aChangedColorLB.InsertEntry(sAuthor);
2144
2145 XColorListSharedPtr aColorTbl = XColorList::GetStdColorList();
2146 sal_uInt16 i;
2147 for( i = 0; i < aColorTbl->Count(); ++i )
2148 {
2149 XColorEntry* pEntry = aColorTbl->GetColor( i );
2150 Color aColor = pEntry->GetColor();
2151 String sName = pEntry->GetName();
2152
2153 aInsertColorLB.InsertEntry( aColor, sName );
2154 aDeletedColorLB.InsertEntry( aColor, sName );
2155 aChangedColorLB.InsertEntry( aColor, sName );
2156 aMarkColorLB.InsertEntry( aColor, sName );
2157 }
2158 aInsertColorLB.SetUpdateMode( sal_True );
2159 aDeletedColorLB.SetUpdateMode( sal_True );
2160 aChangedColorLB.SetUpdateMode( sal_True );
2161 aMarkColorLB.SetUpdateMode( sal_True );
2162
2163 ColorData nColor = rInsertAttr.nColor;
2164
2165 switch (nColor)
2166 {
2167 case COL_TRANSPARENT:
2168 aInsertColorLB.SelectEntryPos(1);
2169 break;
2170 case COL_NONE:
2171 aInsertColorLB.SelectEntryPos(0);
2172 break;
2173 default:
2174 aInsertColorLB.SelectEntry(Color(nColor));
2175 }
2176
2177 nColor = rDeletedAttr.nColor;
2178
2179 switch (nColor)
2180 {
2181 case COL_TRANSPARENT:
2182 aDeletedColorLB.SelectEntryPos(1);
2183 break;
2184 case COL_NONE:
2185 aDeletedColorLB.SelectEntryPos(0);
2186 break;
2187 default:
2188 aDeletedColorLB.SelectEntry(Color(nColor));
2189 }
2190
2191 nColor = rChangedAttr.nColor;
2192
2193 switch (nColor)
2194 {
2195 case COL_TRANSPARENT:
2196 aChangedColorLB.SelectEntryPos(1);
2197 break;
2198 case COL_NONE:
2199 aChangedColorLB.SelectEntryPos(0);
2200 break;
2201 default:
2202 aChangedColorLB.SelectEntry(Color(nColor));
2203 }
2204
2205 aMarkColorLB.SelectEntry(pOpt->GetMarkAlignColor());
2206
2207 aInsertLB.SelectEntryPos(0);
2208 aDeletedLB.SelectEntryPos(0);
2209 aChangedLB.SelectEntryPos(0);
2210
2211 lcl_FillRedlineAttrListBox(aInsertLB, rInsertAttr, aInsertAttrMap,
2212 sizeof(aInsertAttrMap) / sizeof(sal_uInt16));
2213 lcl_FillRedlineAttrListBox(aDeletedLB, rDeletedAttr, aDeletedAttrMap,
2214 sizeof(aDeletedAttrMap) / sizeof(sal_uInt16));
2215 lcl_FillRedlineAttrListBox(aChangedLB, rChangedAttr, aChangedAttrMap,
2216 sizeof(aChangedAttrMap) / sizeof(sal_uInt16));
2217
2218 sal_uInt16 nPos = 0;
2219 switch (pOpt->GetMarkAlignMode())
2220 {
2221 case text::HoriOrientation::NONE: nPos = 0; break;
2222 case text::HoriOrientation::LEFT: nPos = 1; break;
2223 case text::HoriOrientation::RIGHT: nPos = 2; break;
2224 case text::HoriOrientation::OUTSIDE: nPos = 3; break;
2225 case text::HoriOrientation::INSIDE: nPos = 4; break;
2226 }
2227 aMarkPosLB.SelectEntryPos(nPos);
2228
2229 // Einstellungen in Preview anzeigen
2230 AttribHdl(&aInsertLB);
2231 ColorHdl(&aInsertColorLB);
2232 AttribHdl(&aDeletedLB);
2233 ColorHdl(&aInsertColorLB);
2234 AttribHdl(&aChangedLB);
2235 ColorHdl(&aChangedColorLB);
2236
2237 ChangedMaskPrevHdl();
2238 }
2239
IMPL_LINK(SwRedlineOptionsTabPage,AttribHdl,ListBox *,pLB)2240 IMPL_LINK( SwRedlineOptionsTabPage, AttribHdl, ListBox *, pLB )
2241 {
2242 SvxFontPrevWindow *pPrev = 0;
2243 ColorListBox *pColorLB;
2244
2245 if (pLB == &aInsertLB)
2246 {
2247 pColorLB = &aInsertColorLB;
2248 pPrev = &aInsertedPreviewWN;
2249 }
2250 else if (pLB == &aDeletedLB)
2251 {
2252 pColorLB = &aDeletedColorLB;
2253 pPrev = &aDeletedPreviewWN;
2254 }
2255 else
2256 {
2257 pColorLB = &aChangedColorLB;
2258 pPrev = &aChangedPreviewWN;
2259 }
2260
2261 SvxFont& rFont = pPrev->GetFont();
2262 SvxFont& rCJKFont = pPrev->GetCJKFont();
2263
2264 rFont.SetWeight(WEIGHT_NORMAL);
2265 rCJKFont.SetWeight(WEIGHT_NORMAL);
2266 rFont.SetItalic(ITALIC_NONE);
2267 rCJKFont.SetItalic(ITALIC_NONE);
2268 rFont.SetUnderline(UNDERLINE_NONE);
2269 rCJKFont.SetUnderline(UNDERLINE_NONE);
2270 rFont.SetStrikeout(STRIKEOUT_NONE);
2271 rCJKFont.SetStrikeout(STRIKEOUT_NONE);
2272 rFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
2273 rCJKFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
2274
2275 sal_uInt16 nPos = pColorLB->GetSelectEntryPos();
2276
2277 switch( nPos )
2278 {
2279 case 0:
2280 rFont.SetColor( Color( COL_BLACK ) );
2281 rCJKFont.SetColor( Color( COL_BLACK ) );
2282 break;
2283 case 1:
2284 case LISTBOX_ENTRY_NOTFOUND:
2285 rFont.SetColor( Color( COL_RED ) );
2286 rCJKFont.SetColor( Color( COL_RED ) );
2287 break;
2288 default:
2289 rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2290 rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2291 break;
2292 }
2293
2294 nPos = pLB->GetSelectEntryPos();
2295 if( nPos == LISTBOX_ENTRY_NOTFOUND )
2296 nPos = 0;
2297
2298 CharAttr* pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
2299 //switch off preview background color
2300 pPrev->ResetColor();
2301 switch (pAttr->nItemId)
2302 {
2303 case SID_ATTR_CHAR_WEIGHT:
2304 rFont.SetWeight( ( FontWeight ) pAttr->nAttr );
2305 rCJKFont.SetWeight( ( FontWeight ) pAttr->nAttr );
2306 break;
2307
2308 case SID_ATTR_CHAR_POSTURE:
2309 rFont.SetItalic( ( FontItalic ) pAttr->nAttr );
2310 rCJKFont.SetItalic( ( FontItalic ) pAttr->nAttr );
2311 break;
2312
2313 case SID_ATTR_CHAR_UNDERLINE:
2314 rFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
2315 rCJKFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
2316 break;
2317
2318 case SID_ATTR_CHAR_STRIKEOUT:
2319 rFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
2320 rCJKFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
2321 break;
2322
2323 case SID_ATTR_CHAR_CASEMAP:
2324 rFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
2325 rCJKFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
2326 break;
2327
2328 case SID_ATTR_BRUSH:
2329 {
2330 nPos = pColorLB->GetSelectEntryPos();
2331 if( nPos )
2332 pPrev->SetColor( pColorLB->GetSelectEntryColor() );
2333 else
2334 pPrev->SetColor( Color( COL_LIGHTGRAY ) );
2335
2336 rFont.SetColor( Color( COL_BLACK ) );
2337 rCJKFont.SetColor( Color( COL_BLACK ) );
2338 }
2339 break;
2340 }
2341
2342 pPrev->Invalidate();
2343
2344 return 0;
2345 }
2346
IMPL_LINK(SwRedlineOptionsTabPage,ColorHdl,ColorListBox *,pColorLB)2347 IMPL_LINK( SwRedlineOptionsTabPage, ColorHdl, ColorListBox *, pColorLB )
2348 {
2349 SvxFontPrevWindow *pPrev = 0;
2350 ListBox* pLB;
2351
2352 if (pColorLB == &aInsertColorLB)
2353 {
2354 pLB = &aInsertLB;
2355 pPrev = &aInsertedPreviewWN;
2356 }
2357 else if (pColorLB == &aDeletedColorLB)
2358 {
2359 pLB = &aDeletedLB;
2360 pPrev = &aDeletedPreviewWN;
2361 }
2362 else
2363 {
2364 pLB = &aChangedLB;
2365 pPrev = &aChangedPreviewWN;
2366 }
2367
2368 SvxFont& rFont = pPrev->GetFont();
2369 SvxFont& rCJKFont = pPrev->GetCJKFont();
2370 sal_uInt16 nPos = pLB->GetSelectEntryPos();
2371 if( nPos == LISTBOX_ENTRY_NOTFOUND )
2372 nPos = 0;
2373
2374 CharAttr* pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
2375
2376 if( pAttr->nItemId == SID_ATTR_BRUSH )
2377 {
2378 rFont.SetColor( Color( COL_BLACK ) );
2379 rCJKFont.SetColor( Color( COL_BLACK ) );
2380 nPos = pColorLB->GetSelectEntryPos();
2381 if( nPos && nPos != LISTBOX_ENTRY_NOTFOUND )
2382 pPrev->SetColor( pColorLB->GetSelectEntryColor() );
2383 else
2384 pPrev->SetColor( Color( COL_LIGHTGRAY ) );
2385 }
2386 else
2387 {
2388 nPos = pColorLB->GetSelectEntryPos();
2389
2390 switch( nPos )
2391 {
2392 case 0:
2393 rFont.SetColor( Color( COL_BLACK ) );
2394 rCJKFont.SetColor( Color( COL_BLACK ) );
2395 break;
2396 case 1:
2397 case LISTBOX_ENTRY_NOTFOUND:
2398 rFont.SetColor( Color( COL_RED ) );
2399 rCJKFont.SetColor( Color( COL_RED ) );
2400 break;
2401 default:
2402 rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2403 rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
2404 break;
2405 }
2406 }
2407
2408 pPrev->Invalidate();
2409
2410 return 0;
2411 }
2412
IMPL_LINK(SwRedlineOptionsTabPage,ChangedMaskPrevHdl,ListBox *,EMPTYARG)2413 IMPL_LINK( SwRedlineOptionsTabPage, ChangedMaskPrevHdl, ListBox *, EMPTYARG )
2414 {
2415 aMarkPreviewWN.SetMarkPos(aMarkPosLB.GetSelectEntryPos());
2416 aMarkPreviewWN.SetColor(aMarkColorLB.GetSelectEntryColor().GetColor());
2417
2418 aMarkPreviewWN.Invalidate();
2419
2420 return 0;
2421 }
2422
InitFontStyle(SvxFontPrevWindow & rExampleWin)2423 void SwRedlineOptionsTabPage::InitFontStyle(SvxFontPrevWindow& rExampleWin)
2424 {
2425 const AllSettings& rAllSettings = Application::GetSettings();
2426 LanguageType eLangType = rAllSettings.GetUILanguage();
2427 Color aBackCol( rAllSettings.GetStyleSettings().GetWindowColor() );
2428 SvxFont& rFont = rExampleWin.GetFont();
2429 SvxFont& rCJKFont = rExampleWin.GetCJKFont();
2430 SvxFont& rCTLFont = rExampleWin.GetCTLFont();
2431
2432 Font aFont( OutputDevice::GetDefaultFont( DEFAULTFONT_SERIF, eLangType,
2433 DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
2434 Font aCJKFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CJK_TEXT, eLangType,
2435 DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
2436 Font aCTLFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CTL_TEXT, eLangType,
2437 DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
2438 const Size aDefSize( 0, 12 );
2439 aFont.SetSize( aDefSize );
2440 aCJKFont.SetSize( aDefSize );
2441 aCTLFont.SetSize( aDefSize );
2442
2443 aFont.SetFillColor( aBackCol );
2444 aCJKFont.SetFillColor( aBackCol );
2445 aCTLFont.SetFillColor( aBackCol );
2446
2447 aFont.SetWeight( WEIGHT_NORMAL );
2448 aCJKFont.SetWeight( WEIGHT_NORMAL );
2449 aCTLFont.SetWeight( WEIGHT_NORMAL );
2450
2451 rFont = aFont;
2452 rCJKFont = aCJKFont;
2453 rCTLFont = aCTLFont;
2454
2455 const Size aNewSize( 0, rExampleWin.GetOutputSize().Height() * 2 / 3 );
2456 rFont.SetSize( aNewSize );
2457 rCJKFont.SetSize( aNewSize );
2458
2459 rExampleWin.SetFont( rFont, rCJKFont,rCTLFont );
2460
2461 rExampleWin.UseResourceText();
2462
2463 Wallpaper aWall( aBackCol );
2464 rExampleWin.SetBackground( aWall );
2465 rExampleWin.Invalidate();
2466 }
2467
2468
2469 #ifdef DBG_UTIL
2470 /*******************************************************
2471 ******************************************************/
2472 /*----------------- OS 11.01.95 -----------------------
2473 TabPage Testeinstellungen
2474 -------------------------------------------------------*/
2475
lcl_SetPosSize(Window & rWin,Point aPos,Size aSize)2476 void lcl_SetPosSize(Window& rWin, Point aPos, Size aSize)
2477 {
2478 aPos = rWin.LogicToPixel(aPos, MAP_APPFONT);
2479 aSize = rWin.OutputDevice::LogicToPixel(aSize, MAP_APPFONT);
2480 rWin.SetPosSizePixel(aPos, aSize);
2481 }
2482
SwTestTabPage(Window * pParent,const SfxItemSet & rCoreSet)2483 SwTestTabPage::SwTestTabPage( Window* pParent,
2484 const SfxItemSet& rCoreSet) :
2485 SfxTabPage( pParent, WB_HIDE, rCoreSet),
2486 aTestFL ( this, WB_GROUP ),
2487 aTest1CBox ( this, 0 ),
2488 aTest2CBox ( this, 0 ),
2489 aTest3CBox ( this, 0 ),
2490 aTest4CBox ( this, 0 ),
2491 aTest5CBox ( this, 0 ),
2492 aTest6CBox ( this, 0 ),
2493 aTest7CBox ( this, 0 ),
2494 aTest8CBox ( this, 0 ),
2495 aTest9CBox ( this, 0 ),
2496 aTest10CBox ( this, 0 ),
2497 bAttrModified( sal_False )
2498 {
2499 lcl_SetPosSize(*this, Point(0,0), Size(260 , 135));
2500 lcl_SetPosSize(aTestFL, Point(6,2), Size(209,8));
2501 lcl_SetPosSize(aTest1CBox , Point(12 , 14), Size(74 , 10));
2502 lcl_SetPosSize(aTest2CBox , Point(12 , 27), Size(74 , 10));
2503 lcl_SetPosSize(aTest3CBox , Point(12 , 40), Size(74 , 10));
2504 lcl_SetPosSize(aTest4CBox , Point(12 , 53), Size(74 , 10));
2505 lcl_SetPosSize(aTest5CBox , Point(12 , 66), Size(74 , 10));
2506 lcl_SetPosSize(aTest6CBox , Point(116, 14), Size(74 , 10));
2507 lcl_SetPosSize(aTest7CBox , Point(116, 27), Size(74 , 10));
2508 lcl_SetPosSize(aTest8CBox , Point(116, 40), Size(74 , 10));
2509 lcl_SetPosSize(aTest9CBox , Point(116, 53), Size(74 , 10));
2510 lcl_SetPosSize(aTest10CBox , Point(116, 66), Size(74 , 10));
2511
2512 aTestFL.SetText( String(ByteString("Einstellungen nur f\xFCr Testzwecke" ), RTL_TEXTENCODING_MS_1252));
2513 aTest1CBox .SetText( C2S("unused"));
2514 aTest2CBox .SetText( C2S("dynamic"));
2515 aTest3CBox .SetText( C2S("No calm" ));
2516 aTest4CBox .SetText( C2S("WYSIWYG debug" ));
2517 aTest5CBox .SetText( C2S("No idle format" ));
2518 aTest6CBox .SetText( C2S("No screen adj" ));
2519 aTest7CBox .SetText( C2S("win format" ));
2520 aTest8CBox .SetText( C2S("No Scroll" ));
2521 aTest9CBox .SetText( C2S("DrawingLayerNotLoading"));
2522 aTest10CBox.SetText( C2S("AutoFormat by Input" ));
2523 aTestFL.Show();
2524 aTest1CBox .Show();
2525 aTest2CBox .Show();
2526 aTest3CBox .Show();
2527 aTest4CBox .Show();
2528 aTest5CBox .Show();
2529 aTest6CBox .Show();
2530 aTest7CBox .Show();
2531 aTest8CBox .Show();
2532 aTest9CBox .Show();
2533 aTest10CBox.Show();
2534 Init();
2535
2536 }
2537
2538
2539 //------------------------------------------------------------------------
2540
2541
Create(Window * pParent,const SfxItemSet & rAttrSet)2542 SfxTabPage* SwTestTabPage::Create( Window* pParent,
2543 const SfxItemSet& rAttrSet )
2544 {
2545 return ( new SwTestTabPage( pParent, rAttrSet ) );
2546 }
2547 //------------------------------------------------------------------------
2548
2549
FillItemSet(SfxItemSet & rCoreSet)2550 sal_Bool SwTestTabPage::FillItemSet( SfxItemSet& rCoreSet )
2551 {
2552
2553 if ( bAttrModified )
2554 {
2555 SwTestItem aTestItem(FN_PARAM_SWTEST);
2556 aTestItem.bTest1=aTest1CBox.IsChecked();
2557 aTestItem.bTest2=aTest2CBox.IsChecked();
2558 aTestItem.bTest3=aTest3CBox.IsChecked();
2559 aTestItem.bTest4=aTest4CBox.IsChecked();
2560 aTestItem.bTest5=aTest5CBox.IsChecked();
2561 aTestItem.bTest6=aTest6CBox.IsChecked();
2562 aTestItem.bTest7=aTest7CBox.IsChecked();
2563 aTestItem.bTest8=aTest8CBox.IsChecked();
2564 aTestItem.bTest9=aTest9CBox.IsChecked();
2565 aTestItem.bTest10=aTest10CBox.IsChecked();
2566 rCoreSet.Put(aTestItem);
2567 }
2568 return bAttrModified;
2569 }
2570 //------------------------------------------------------------------------
2571
2572
Reset(const SfxItemSet &)2573 void SwTestTabPage::Reset( const SfxItemSet& )
2574 {
2575 const SfxItemSet& rSet = GetItemSet();
2576 const SwTestItem* pTestAttr = 0;
2577
2578 if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SWTEST , sal_False,
2579 (const SfxPoolItem**)&pTestAttr ))
2580 {
2581 aTest1CBox.Check(pTestAttr->bTest1);
2582 aTest2CBox.Check(pTestAttr->bTest2);
2583 aTest3CBox.Check(pTestAttr->bTest3);
2584 aTest4CBox.Check(pTestAttr->bTest4);
2585 aTest5CBox.Check(pTestAttr->bTest5);
2586 aTest6CBox.Check(pTestAttr->bTest6);
2587 aTest7CBox.Check(pTestAttr->bTest7);
2588 aTest8CBox.Check(pTestAttr->bTest8);
2589 aTest9CBox.Check(pTestAttr->bTest9);
2590 aTest10CBox.Check(pTestAttr->bTest10);
2591 }
2592 }
2593 //------------------------------------------------------------------------
2594
2595
Init()2596 void SwTestTabPage::Init()
2597 {
2598 // handler
2599 Link aLk = LINK( this, SwTestTabPage, AutoClickHdl );
2600 aTest1CBox.SetClickHdl( aLk );
2601 aTest2CBox.SetClickHdl( aLk );
2602 aTest3CBox.SetClickHdl( aLk );
2603 aTest4CBox.SetClickHdl( aLk );
2604 aTest5CBox.SetClickHdl( aLk );
2605 aTest6CBox.SetClickHdl( aLk );
2606 aTest7CBox.SetClickHdl( aLk );
2607 aTest8CBox.SetClickHdl( aLk );
2608 aTest9CBox.SetClickHdl( aLk );
2609 aTest10CBox.SetClickHdl( aLk );
2610 }
2611 //------------------------------------------------------------------------
2612
2613
IMPL_LINK_INLINE_START(SwTestTabPage,AutoClickHdl,CheckBox *,EMPTYARG)2614 IMPL_LINK_INLINE_START( SwTestTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
2615 {
2616 bAttrModified = sal_True;
2617 return 0;
2618 }
2619 IMPL_LINK_INLINE_END( SwTestTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
2620 #endif
2621
2622