1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: optload.cxx,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_sw.hxx"
33 #ifdef SW_DLLIMPLEMENTATION
34 #undef SW_DLLIMPLEMENTATION
38 #include <tools/shl.hxx>
39 #include <swtypes.hxx>
43 #include <uiitems.hxx>
47 #include "swmodule.hxx"
48 #include "usrpref.hxx"
50 #include "linkenum.hxx"
54 #include "globals.hrc"
57 #include "optload.hrc"
58 #include "optload.hxx"
59 #include <svx/dlgutil.hxx>
60 #include <svx/htmlmode.hxx>
62 #include <poolfmt.hxx>
64 #include <caption.hxx>
65 #include <com/sun/star/document/PrinterIndependentLayout.hpp>
67 #include <svtools/insdlg.hxx>
68 #include <sot/clsids.hxx>
69 #include <unotools/configmgr.hxx>
74 #include <SwStyleNameMapper.hxx>
75 #include <numrule.hxx>
76 #include <SwNodeNum.hxx>
79 #include <svtools/cjkoptions.hxx>
81 using namespace ::com::sun::star
;
83 #ifndef _SFXENUMITEM_HXX //autogen
84 #include <svtools/eitem.hxx>
87 /* -----------------22.10.98 15:12-------------------
89 * --------------------------------------------------*/
90 SwLoadOptPage::SwLoadOptPage( Window
* pParent
, const SfxItemSet
& rSet
) :
92 SfxTabPage( pParent
, SW_RES( TP_OPTLOAD_PAGE
), rSet
),
94 aUpdateFL ( this, SW_RES( FL_UPDATE
) ),
95 aLinkFT ( this, SW_RES( FT_LINK
) ),
96 aAlwaysRB ( this, SW_RES( RB_ALWAYS
) ),
97 aRequestRB ( this, SW_RES( RB_REQUEST
) ),
98 aNeverRB ( this, SW_RES( RB_NEVER
) ),
100 aFieldFT ( this, SW_RES( FT_FIELD
) ),
101 aAutoUpdateFields ( this, SW_RES( CB_AUTO_UPDATE_FIELDS
) ),
102 aAutoUpdateCharts ( this, SW_RES( CB_AUTO_UPDATE_CHARTS
) ),
104 aSettingsFL ( this, SW_RES( FL_SETTINGS
) ),
105 aMetricFT ( this, SW_RES( FT_METRIC
) ),
106 aMetricLB ( this, SW_RES( LB_METRIC
) ),
107 aTabFT ( this, SW_RES( FT_TAB
) ),
108 aTabMF ( this, SW_RES( MF_TAB
) ),
109 aUseSquaredPageMode ( this, SW_RES( CB_USE_SQUARE_PAGE_MODE
) ),
110 aUseCharUnit ( this , SW_RES( CB_USE_CHAR_UNIT
) ),
115 nOldLinkMode( MANUAL
)
120 SvxStringArray
aMetricArr( SW_RES( STR_ARR_METRIC
) );
121 for ( USHORT i
= 0; i
< aMetricArr
.Count(); ++i
)
123 String sMetric
= aMetricArr
.GetStringByPos( i
);
124 FieldUnit eFUnit
= (FieldUnit
)aMetricArr
.GetValue( i
);
134 // nur diese Metriken benutzen
135 USHORT nPos
= aMetricLB
.InsertEntry( sMetric
);
136 aMetricLB
.SetEntryData( nPos
, (void*)(long)eFUnit
);
138 default:; //prevent warning
141 aMetricLB
.SetSelectHdl(LINK(this, SwLoadOptPage
, MetricHdl
));
143 const SfxPoolItem
* pItem
;
144 if(SFX_ITEM_SET
== rSet
.GetItemState(SID_HTML_MODE
, FALSE
, &pItem
)
145 && ((SfxUInt16Item
*)pItem
)->GetValue() & HTMLMODE_ON
)
151 SvtCJKOptions aCJKOptions
;
152 if(!aCJKOptions
.IsAsianTypographyEnabled())
154 aUseSquaredPageMode
.Hide();
159 /*-----------------18.01.97 12.43-------------------
161 --------------------------------------------------*/
163 SwLoadOptPage::~SwLoadOptPage()
167 /*-----------------18.01.97 12.43-------------------
169 --------------------------------------------------*/
171 SfxTabPage
* __EXPORT
SwLoadOptPage::Create( Window
* pParent
,
172 const SfxItemSet
& rAttrSet
)
174 return new SwLoadOptPage(pParent
, rAttrSet
);
177 /*-----------------18.01.97 12.42-------------------
179 --------------------------------------------------*/
181 BOOL __EXPORT
SwLoadOptPage::FillItemSet( SfxItemSet
& rSet
)
184 SwModule
* pMod
= SW_MOD();
186 USHORT nNewLinkMode
= AUTOMATIC
;
187 if (aNeverRB
.IsChecked())
188 nNewLinkMode
= NEVER
;
189 else if (aRequestRB
.IsChecked())
190 nNewLinkMode
= MANUAL
;
192 SwFldUpdateFlags eFldFlags
= aAutoUpdateFields
.IsChecked() ?
193 aAutoUpdateCharts
.IsChecked() ? AUTOUPD_FIELD_AND_CHARTS
: AUTOUPD_FIELD_ONLY
: AUTOUPD_OFF
;
195 if(aAutoUpdateFields
.IsChecked() != aAutoUpdateFields
.GetSavedValue() ||
196 aAutoUpdateCharts
.IsChecked() != aAutoUpdateCharts
.GetSavedValue())
198 pMod
->ApplyFldUpdateFlags(eFldFlags
);
201 pWrtShell
->SetFldUpdateFlags(eFldFlags
);
202 pWrtShell
->SetModified();
206 if (nNewLinkMode
!= nOldLinkMode
)
208 pMod
->ApplyLinkMode(nNewLinkMode
);
211 pWrtShell
->SetLinkUpdMode( nNewLinkMode
);
212 pWrtShell
->SetModified();
218 const USHORT nMPos
= aMetricLB
.GetSelectEntryPos();
219 if ( nMPos
!= aMetricLB
.GetSavedValue() )
221 // Doppel-Cast fuer VA3.0
222 USHORT nFieldUnit
= (USHORT
)(long)aMetricLB
.GetEntryData( nMPos
);
223 rSet
.Put( SfxUInt16Item( SID_ATTR_METRIC
, (UINT16
)nFieldUnit
) );
227 if(aTabMF
.IsVisible() && aTabMF
.GetText() != aTabMF
.GetSavedValue())
229 rSet
.Put(SfxUInt16Item(SID_ATTR_DEFTABSTOP
,
230 (USHORT
)aTabMF
.Denormalize(aTabMF
.GetValue(FUNIT_TWIP
))));
234 sal_Bool bIsUseCharUnitFlag
= aUseCharUnit
.IsChecked();
235 SvtCJKOptions aCJKOptions
;
236 bIsUseCharUnitFlag
= bIsUseCharUnitFlag
&& aCJKOptions
.IsAsianTypographyEnabled();
237 if( bIsUseCharUnitFlag
!= aUseCharUnit
.GetSavedValue())
239 rSet
.Put(SfxBoolItem(SID_ATTR_APPLYCHARUNIT
, bIsUseCharUnitFlag
));
243 sal_Bool bIsSquaredPageModeFlag
= aUseSquaredPageMode
.IsChecked();
244 if ( bIsSquaredPageModeFlag
!= aUseSquaredPageMode
.GetSavedValue() )
246 pMod
->ApplyDefaultPageMode( bIsSquaredPageModeFlag
);
249 SwDoc
* pDoc
= pWrtShell
->GetDoc();
250 pDoc
->SetDefaultPageMode( bIsSquaredPageModeFlag
);
251 pWrtShell
->SetModified();
258 /*-----------------18.01.97 12.42-------------------
260 --------------------------------------------------*/
261 void __EXPORT
SwLoadOptPage::Reset( const SfxItemSet
& rSet
)
263 const SwMasterUsrPref
* pUsrPref
= SW_MOD()->GetUsrPref(FALSE
);
264 const SfxPoolItem
* pItem
;
266 if(SFX_ITEM_SET
== rSet
.GetItemState(FN_PARAM_WRTSHELL
, FALSE
, &pItem
))
267 pWrtShell
= (SwWrtShell
*)((const SwPtrItem
*)pItem
)->GetValue();
269 SwFldUpdateFlags eFldFlags
= AUTOUPD_GLOBALSETTING
;
270 nOldLinkMode
= GLOBALSETTING
;
273 eFldFlags
= pWrtShell
->GetFldUpdateFlags(TRUE
);
274 nOldLinkMode
= pWrtShell
->GetLinkUpdMode(TRUE
);
276 if(GLOBALSETTING
== nOldLinkMode
)
277 nOldLinkMode
= pUsrPref
->GetUpdateLinkMode();
278 if(AUTOUPD_GLOBALSETTING
== eFldFlags
)
279 eFldFlags
= pUsrPref
->GetFldUpdateFlags();
281 aAutoUpdateFields
.Check(eFldFlags
!= AUTOUPD_OFF
);
282 aAutoUpdateCharts
.Check(eFldFlags
== AUTOUPD_FIELD_AND_CHARTS
);
284 switch (nOldLinkMode
)
286 case NEVER
: aNeverRB
.Check(); break;
287 case MANUAL
: aRequestRB
.Check(); break;
288 case AUTOMATIC
: aAlwaysRB
.Check(); break;
291 aAutoUpdateFields
.SaveValue();
292 aAutoUpdateCharts
.SaveValue();
293 aMetricLB
.SetNoSelection();
294 if ( rSet
.GetItemState( SID_ATTR_METRIC
) >= SFX_ITEM_AVAILABLE
)
296 const SfxUInt16Item
& rItem
= (SfxUInt16Item
&)rSet
.Get( SID_ATTR_METRIC
);
297 FieldUnit eFieldUnit
= (FieldUnit
)rItem
.GetValue();
299 for ( USHORT i
= 0; i
< aMetricLB
.GetEntryCount(); ++i
)
301 if ( (int)(sal_IntPtr
)aMetricLB
.GetEntryData( i
) == (int)eFieldUnit
)
303 aMetricLB
.SelectEntryPos( i
);
307 ::SetFieldUnit(aTabMF
, eFieldUnit
);
309 aMetricLB
.SaveValue();
310 if(SFX_ITEM_SET
== rSet
.GetItemState(SID_ATTR_DEFTABSTOP
, FALSE
, &pItem
))
312 nLastTab
= ((SfxUInt16Item
*)pItem
)->GetValue();
313 aTabMF
.SetValue(aTabMF
.Normalize(nLastTab
), FUNIT_TWIP
);
317 if(SFX_ITEM_SET
== rSet
.GetItemState(SID_HTML_MODE
, FALSE
, &pItem
))
319 bHTMLMode
= 0 != (((const SfxUInt16Item
*)pItem
)->GetValue() & HTMLMODE_ON
);
322 //default page mode loading
325 sal_Bool bSquaredPageMode
= pWrtShell
->GetDoc()->IsSquaredPageMode();
326 aUseSquaredPageMode
.Check( bSquaredPageMode
);
327 aUseSquaredPageMode
.SaveValue();
330 if(SFX_ITEM_SET
== rSet
.GetItemState(SID_ATTR_APPLYCHARUNIT
, FALSE
, &pItem
))
332 BOOL bUseCharUnit
= ((const SfxBoolItem
*)pItem
)->GetValue();
333 aUseCharUnit
.Check(bUseCharUnit
);
337 aUseCharUnit
.Check(pUsrPref
->IsApplyCharUnit());
339 aUseCharUnit
.SaveValue();
341 /*-----------------13.01.97 14.44-------------------
342 Metric des Deftabstops umschalten
343 --------------------------------------------------*/
345 IMPL_LINK(SwLoadOptPage
, MetricHdl
, ListBox
*, EMPTYARG
)
347 const USHORT nMPos
= aMetricLB
.GetSelectEntryPos();
348 if(nMPos
!= USHRT_MAX
)
350 // Doppel-Cast fuer VA3.0
351 FieldUnit eFieldUnit
= (FieldUnit
)(long)aMetricLB
.GetEntryData( nMPos
);
352 BOOL bModified
= aTabMF
.IsModified();
353 long nVal
= bModified
?
354 sal::static_int_cast
<sal_Int32
, sal_Int64
>( aTabMF
.Denormalize( aTabMF
.GetValue( FUNIT_TWIP
) )) :
356 ::SetFieldUnit( aTabMF
, eFieldUnit
);
357 aTabMF
.SetValue( aTabMF
.Normalize( nVal
), FUNIT_TWIP
);
359 aTabMF
.ClearModifyFlag();
364 /*********************************************************************/
366 /*********************************************************************/
368 IMPL_LINK(SwLoadOptPage
, CaptionHdl
, PushButton
*, EMPTYARG
)
370 SwCaptionOptDlg
aDlg(this, GetItemSet());
376 /*--------------------------------------------------------------------
378 --------------------------------------------------------------------*/
380 SwCaptionOptDlg::SwCaptionOptDlg(Window
* pParent
, const SfxItemSet
& rSet
) :
381 SfxSingleTabDialog(pParent
, rSet
, 0)
384 SetTabPage((SwCaptionOptPage
*) SwCaptionOptPage::Create(this, rSet
));
387 /*--------------------------------------------------------------------
389 --------------------------------------------------------------------*/
391 SwCaptionOptDlg::~SwCaptionOptDlg()
395 /* -----------------22.10.98 15:12-------------------
397 * --------------------------------------------------*/
399 SwCaptionPreview::SwCaptionPreview( Window
* pParent
, const ResId
& rResId
)
400 : Window( pParent
, rResId
)
402 maDrawPos
= Point( 4, 6 );
404 Wallpaper
aBack( GetSettings().GetStyleSettings().GetWindowColor() );
405 SetBackground( aBack
);
406 SetFillColor( aBack
.GetColor() );
407 SetLineColor( aBack
.GetColor() );
408 SetBorderStyle( WINDOW_BORDER_MONO
);
409 Font
aFont(GetFont());
410 aFont
.SetHeight(aFont
.GetHeight() * 120 / 100 );
414 void SwCaptionPreview::SetPreviewText( const String
& rText
)
416 if( rText
!= maText
)
423 void SwCaptionPreview::Paint( const Rectangle
& rRect
)
425 Window::Paint( rRect
);
427 DrawRect( Rectangle( Point( 0, 0 ), GetSizePixel() ) );
428 DrawText( Point( 4, 6 ), maText
);
432 SwCaptionOptPage::SwCaptionOptPage( Window
* pParent
, const SfxItemSet
& rSet
)
433 : SfxTabPage(pParent
, SW_RES(TP_OPTCAPTION_PAGE
), rSet
),
434 aCheckFT (this, SW_RES(FT_OBJECTS
)),
435 aCheckLB (this, SW_RES(CLB_OBJECTS
)),
436 aFtCaptionOrder(this, SW_RES( FT_ORDER
)),
437 aLbCaptionOrder(this, SW_RES( LB_ORDER
)),
438 aPreview (this, SW_RES(WIN_PREVIEW
)),
439 aSettingsGroupFL(this, SW_RES(FL_SETTINGS_2
)),
440 aCategoryText (this, SW_RES(TXT_CATEGORY
)),
441 aCategoryBox (this, SW_RES(BOX_CATEGORY
)),
442 aFormatText (this, SW_RES(TXT_FORMAT
)),
443 aFormatBox (this, SW_RES(BOX_FORMAT
)),
444 aNumberingSeparatorFT(this, SW_RES(FT_NUM_SEP
)),
445 aNumberingSeparatorED(this, SW_RES(ED_NUM_SEP
)),
446 aTextText (this, SW_RES(TXT_TEXT
)),
447 aTextEdit (this, SW_RES(EDT_TEXT
)),
448 aPosText (this, SW_RES(TXT_POS
)),
449 aPosBox (this, SW_RES(BOX_POS
)),
450 aNumCaptFL (this, SW_RES(FL_NUMCAPT
)),
451 aFtLevel (this, SW_RES(FT_LEVEL
)),
452 aLbLevel (this, SW_RES(LB_LEVEL
)),
453 aFtDelim (this, SW_RES(FT_SEPARATOR
)),
454 aEdDelim (this, SW_RES(ED_SEPARATOR
)),
455 aCategoryFL (this, SW_RES(FL_CATEGORY
)),
456 aCharStyleFT (this, SW_RES(FT_CHARSTYLE
)),
457 aCharStyleLB (this, SW_RES(LB_CHARSTYLE
)),
458 aApplyBorderCB (this, SW_RES(CB_APPLYBORDER
)),
460 sSWTable (SW_RES(STR_TABLE
)),
461 sSWFrame (SW_RES(STR_FRAME
)),
462 sSWGraphic (SW_RES(STR_GRAPHIC
)),
463 sOLE (SW_RES(STR_OLE
)),
465 sBegin (SW_RESSTR(STR_BEGINNING
)),
466 sEnd (SW_RESSTR(STR_END
)),
467 sAbove (SW_RESSTR(STR_ABOVE
)),
468 sBelow (SW_RESSTR(STR_CP_BELOW
)),
469 sNone (SW_RESSTR( STR_CATEGORY_NONE
)),
471 pMgr (new SwFldMgr()),
474 Wallpaper
aBack( GetSettings().GetStyleSettings().GetWindowColor() );
475 aPreview
.SetBackground( aBack
);
477 SwStyleNameMapper::FillUIName( RES_POOLCOLL_LABEL_ABB
, sIllustration
);
478 SwStyleNameMapper::FillUIName( RES_POOLCOLL_LABEL_TABLE
, sTable
);
479 SwStyleNameMapper::FillUIName( RES_POOLCOLL_LABEL_FRAME
, sText
);
480 SwStyleNameMapper::FillUIName( RES_POOLCOLL_LABEL_DRAWING
, sDrawing
);
483 SwWrtShell
*pSh
= ::GetActiveWrtShell();
486 USHORT nSelFmt
= SVX_NUM_ARABIC
;
489 nCount
= pMgr
->GetFldTypeCount();
490 SwFieldType
* pFldType
;
491 for ( i
= nCount
; i
; )
492 if( ( pFldType
= pMgr
->GetFldType(USHRT_MAX
, --i
))->GetName() ==
493 aCategoryBox
.GetText() )
495 nSelFmt
= (USHORT
)((SwSetExpFieldType
*)pFldType
)->GetSeqFormat();
499 ::FillCharStyleListBox( aCharStyleLB
, pSh
->GetView().GetDocShell(), TRUE
, TRUE
);
503 nCount
= pMgr
->GetFormatCount(TYP_SEQFLD
, FALSE
);
504 for ( i
= 0; i
< nCount
; ++i
)
506 aFormatBox
.InsertEntry( pMgr
->GetFormatStr(TYP_SEQFLD
, i
) );
507 USHORT nFmtId
= pMgr
->GetFormatId(TYP_SEQFLD
, i
);
508 aFormatBox
.SetEntryData( i
, reinterpret_cast<void*>(nFmtId
) );
509 if( nFmtId
== nSelFmt
)
510 aFormatBox
.SelectEntryPos( i
);
513 for (i
= 0; i
< MAXLEVEL
; i
++)
514 aLbLevel
.InsertEntry(String::CreateFromInt32(i
+ 1));
516 sal_Unicode nLvl
= MAXLEVEL
;
517 String
sDelim( String::CreateFromAscii( ": " ) );
521 SwSetExpFieldType
* pFldType
= (SwSetExpFieldType
*)pMgr
->GetFldType(
522 RES_SETEXPFLD
, aCategoryBox
.GetText() );
525 sDelim
= pFldType
->GetDelimiter();
526 nLvl
= pFldType
->GetOutlineLvl();
530 aLbLevel
.SelectEntryPos( nLvl
< MAXLEVEL
? nLvl
+ 1 : 0 );
531 aEdDelim
.SetText( sDelim
);
533 aCheckLB
.SetHelpId(HID_OPTCAPTION_CLB
);
537 Link aLk
= LINK( this, SwCaptionOptPage
, ModifyHdl
);
538 aCategoryBox
.SetModifyHdl( aLk
);
539 aNumberingSeparatorED
.SetModifyHdl( aLk
);
540 aTextEdit
.SetModifyHdl( aLk
);
542 aLk
= LINK(this, SwCaptionOptPage
, SelectHdl
);
543 aCategoryBox
.SetSelectHdl( aLk
);
544 aFormatBox
.SetSelectHdl( aLk
);
546 aLbCaptionOrder
.SetSelectHdl( LINK(this, SwCaptionOptPage
, OrderHdl
));
548 aCheckLB
.SetSelectHdl( LINK(this, SwCaptionOptPage
, ShowEntryHdl
) );
549 aCheckLB
.SetCheckButtonHdl( LINK(this, SwCaptionOptPage
, ShowEntryHdl
) );
550 aCheckLB
.SetDeselectHdl( LINK(this, SwCaptionOptPage
, SaveEntryHdl
) );
553 /*-----------------18.01.97 12.43-------------------
555 --------------------------------------------------*/
557 SwCaptionOptPage::~SwCaptionOptPage()
563 /*-----------------18.01.97 12.43-------------------
565 --------------------------------------------------*/
567 SfxTabPage
* SwCaptionOptPage::Create( Window
* pParent
,
568 const SfxItemSet
& rAttrSet
)
570 return new SwCaptionOptPage(pParent
, rAttrSet
);
573 /*-----------------18.01.97 12.42-------------------
575 --------------------------------------------------*/
577 BOOL
SwCaptionOptPage::FillItemSet( SfxItemSet
& )
580 SwModuleOptions
* pModOpt
= SW_MOD()->GetModuleConfig();
582 SaveEntry(aCheckLB
.FirstSelected()); // Aktuellen Eintrag uebernehmen
584 SvLBoxEntry
* pEntry
= aCheckLB
.First();
588 InsCaptionOpt
* pData
= (InsCaptionOpt
*)pEntry
->GetUserData();
589 bRet
|= pModOpt
->SetCapOption(bHTMLMode
, pData
);
590 pEntry
= aCheckLB
.Next(pEntry
);
593 USHORT nCheckCount
= aCheckLB
.GetCheckedEntryCount();
594 pModOpt
->SetInsWithCaption( bHTMLMode
, nCheckCount
> 0 );
596 sal_Int32 nPos
= aLbCaptionOrder
.GetSelectEntryPos();
597 pModOpt
->SetCaptionOrderNumberingFirst(nPos
== 1 ? sal_True
: sal_False
);
602 /*-----------------18.01.97 12.42-------------------
604 --------------------------------------------------*/
606 void SwCaptionOptPage::Reset( const SfxItemSet
& rSet
)
608 const SfxPoolItem
* pItem
;
609 if(SFX_ITEM_SET
== rSet
.GetItemState(SID_HTML_MODE
, FALSE
, &pItem
))
611 bHTMLMode
= 0 != (((const SfxUInt16Item
*)pItem
)->GetValue() & HTMLMODE_ON
);
615 aCheckLB
.GetModel()->Clear(); // remove all entries
619 aCheckLB
.InsertEntry(sSWTable
);
620 SetOptions(nPos
++, TABLE_CAP
);
621 aCheckLB
.InsertEntry(sSWFrame
);
622 SetOptions(nPos
++, FRAME_CAP
);
623 aCheckLB
.InsertEntry(sSWGraphic
);
624 SetOptions(nPos
++, GRAPHIC_CAP
);
626 // get Productname and -version
627 String sComplete
, sWithoutVersion
;
628 ::rtl::OUString sTemp
;
630 ::utl::ConfigManager::GetDirectConfigProperty( ::utl::ConfigManager::PRODUCTNAME
);
631 if ( aAny
>>= sTemp
)
634 sWithoutVersion
= sTemp
;
635 aAny
= ::utl::ConfigManager::GetDirectConfigProperty( ::utl::ConfigManager::PRODUCTVERSION
);
636 if ( !( aAny
>>= sTemp
) )
638 DBG_ERRORFILE( "Couldn't get PRODUCTVERSION variable" );
643 sComplete
+= String( sTemp
);
648 DBG_ERRORFILE( "Couldn't get PRODUCTNAME variable" );
651 SvObjectServerList aObjS
;
652 aObjS
.FillInsertObjects();
653 aObjS
.Remove( SvGlobalName( SO3_SW_CLASSID
) ); // remove Writer-ID
655 for ( ULONG i
= 0; i
< aObjS
.Count(); ++i
)
657 const SvGlobalName
&rOleId
= aObjS
[i
].GetClassName();
658 const String
* pClassName
= &aObjS
[i
].GetHumanName();
659 if ( rOleId
== SvGlobalName( SO3_OUT_CLASSID
) )
661 String
sClass( *pClassName
);
662 // don't show product version
663 sClass
.SearchAndReplace( sComplete
, sWithoutVersion
);
664 aCheckLB
.InsertEntry( sClass
);
665 SetOptions( nPos
++, OLE_CAP
, &rOleId
);
667 aLbCaptionOrder
.SelectEntryPos(
668 SW_MOD()->GetModuleConfig()->IsCaptionOrderNumberingFirst() ? 1 : 0);
672 /*-----------------18.01.97 12.42-------------------
674 --------------------------------------------------*/
676 void SwCaptionOptPage::SetOptions(const USHORT nPos
,
677 const SwCapObjType eObjType
, const SvGlobalName
*pOleId
)
679 SwModuleOptions
* pModOpt
= SW_MOD()->GetModuleConfig();
680 const InsCaptionOpt
* pOpt
= pModOpt
->GetCapOption(bHTMLMode
, eObjType
, pOleId
);
684 aCheckLB
.SetEntryData(nPos
, new InsCaptionOpt(*pOpt
));
685 aCheckLB
.CheckEntryPos(nPos
, pOpt
->UseCaption());
688 aCheckLB
.SetEntryData(nPos
, new InsCaptionOpt(eObjType
, pOleId
));
691 /*-----------------18.01.97 12.42-------------------
693 --------------------------------------------------*/
695 void SwCaptionOptPage::DelUserData()
697 SvLBoxEntry
* pEntry
= aCheckLB
.First();
701 delete (InsCaptionOpt
*)pEntry
->GetUserData();
702 pEntry
->SetUserData(0);
703 pEntry
= aCheckLB
.Next(pEntry
);
707 /* -----------------26.10.98 11:06-------------------
709 * --------------------------------------------------*/
711 IMPL_LINK( SwCaptionOptPage
, ShowEntryHdl
, SvxCheckListBox
*, EMPTYARG
)
713 SvLBoxEntry
* pSelEntry
= aCheckLB
.FirstSelected();
717 sal_Bool bChecked
= aCheckLB
.IsChecked((USHORT
)aCheckLB
.GetModel()->GetAbsPos(pSelEntry
));
719 aSettingsGroupFL
.Enable( bChecked
);
720 aCategoryText
.Enable( bChecked
);
721 aCategoryBox
.Enable( bChecked
);
722 aFormatText
.Enable( bChecked
);
723 aFormatBox
.Enable( bChecked
);
724 sal_Bool bNumSep
= bChecked
&& aLbCaptionOrder
.GetSelectEntryPos() == 1;
725 aNumberingSeparatorED
.Enable( bNumSep
);
726 aNumberingSeparatorFT
.Enable( bNumSep
);
727 aTextText
.Enable( bChecked
);
728 aTextEdit
.Enable( bChecked
);
729 aPosText
.Enable( bChecked
);
730 aPosBox
.Enable( bChecked
);
731 aNumCaptFL
.Enable( bChecked
);
732 aFtLevel
.Enable( bChecked
);
733 aLbLevel
.Enable( bChecked
);
734 aFtDelim
.Enable( bChecked
);
735 aEdDelim
.Enable( bChecked
);
736 aCategoryFL
.Enable( bChecked
);
737 aCharStyleFT
.Enable( bChecked
);
738 aCharStyleLB
.Enable( bChecked
);
739 aApplyBorderCB
.Enable( bChecked
);
740 aPreview
.Enable( bChecked
);
742 SwWrtShell
*pSh
= ::GetActiveWrtShell();
744 InsCaptionOpt
* pOpt
= (InsCaptionOpt
*)pSelEntry
->GetUserData();
746 aCategoryBox
.Clear();
747 aCategoryBox
.InsertEntry( sNone
);
750 USHORT nCount
= pMgr
->GetFldTypeCount();
752 for (USHORT i
= 0; i
< nCount
; i
++)
754 SwFieldType
*pType
= pMgr
->GetFldType( USHRT_MAX
, i
);
755 if( pType
->Which() == RES_SETEXPFLD
&&
756 ((SwSetExpFieldType
*) pType
)->GetType() & nsSwGetSetExpType::GSE_SEQ
)
757 aCategoryBox
.InsertEntry(SwBoxEntry(pType
->GetName()));
762 aCategoryBox
.InsertEntry(SwBoxEntry(sIllustration
));
763 aCategoryBox
.InsertEntry(SwBoxEntry(sTable
));
764 aCategoryBox
.InsertEntry(SwBoxEntry(sText
));
765 aCategoryBox
.InsertEntry(SwBoxEntry(sDrawing
));
768 if(pOpt
->GetCategory().Len())
769 aCategoryBox
.SetText(pOpt
->GetCategory());
771 aCategoryBox
.SetText( sNone
);
772 if (pOpt
->GetCategory().Len() &&
773 aCategoryBox
.GetEntryPos(pOpt
->GetCategory()) == COMBOBOX_ENTRY_NOTFOUND
)
774 aCategoryBox
.InsertEntry(pOpt
->GetCategory());
775 if (!aCategoryBox
.GetText().Len())
778 switch(pOpt
->GetObjType())
781 case GRAPHIC_CAP
: nPos
= 1; break;
782 case TABLE_CAP
: nPos
= 2; break;
783 case FRAME_CAP
: nPos
= 3; break;
785 aCategoryBox
.SetText(aCategoryBox
.GetEntry(nPos
).GetName());
788 for (USHORT i
= 0; i
< aFormatBox
.GetEntryCount(); i
++)
790 if (pOpt
->GetNumType() == (USHORT
)(ULONG
)aFormatBox
.GetEntryData(i
))
792 aFormatBox
.SelectEntryPos(i
);
796 aTextEdit
.SetText(pOpt
->GetCaption());
799 switch (pOpt
->GetObjType())
804 aPosBox
.InsertEntry(sAbove
);
805 aPosBox
.InsertEntry(sBelow
);
808 aPosBox
.InsertEntry(sBegin
);
809 aPosBox
.InsertEntry(sEnd
);
812 aPosBox
.SelectEntryPos(pOpt
->GetPos());
813 aPosBox
.Enable( pOpt
->GetObjType() != GRAPHIC_CAP
&&
814 pOpt
->GetObjType() != OLE_CAP
&&
815 aPosText
.IsEnabled() );
816 aPosBox
.SelectEntryPos(pOpt
->GetPos());
818 USHORT nLevelPos
= ( pOpt
->GetLevel() < MAXLEVEL
) ? pOpt
->GetLevel() + 1 : 0;
819 aLbLevel
.SelectEntryPos( nLevelPos
);
820 aEdDelim
.SetText(pOpt
->GetSeparator());
821 aNumberingSeparatorED
.SetText( pOpt
->GetNumSeparator() );
822 if(pOpt
->GetCharacterStyle().Len())
823 aCharStyleLB
.SelectEntry( pOpt
->GetCharacterStyle() );
825 aCharStyleLB
.SelectEntryPos( 0 );
826 aApplyBorderCB
.Enable( aCategoryBox
.IsEnabled() &&
827 pOpt
->GetObjType() != TABLE_CAP
&& pOpt
->GetObjType() != FRAME_CAP
);
828 aApplyBorderCB
.Check( pOpt
->CopyAttributes() );
836 /* -----------------26.10.98 11:06-------------------
838 * --------------------------------------------------*/
840 IMPL_LINK( SwCaptionOptPage
, SaveEntryHdl
, SvxCheckListBox
*, EMPTYARG
)
842 SvLBoxEntry
* pEntry
= aCheckLB
.GetHdlEntry();
844 if (pEntry
) // Alles speichern
850 /* -----------------05.11.98 16:23-------------------
852 * --------------------------------------------------*/
854 void SwCaptionOptPage::SaveEntry(SvLBoxEntry
* pEntry
)
858 InsCaptionOpt
* pOpt
= (InsCaptionOpt
*)pEntry
->GetUserData();
860 pOpt
->UseCaption() = aCheckLB
.IsChecked((USHORT
)aCheckLB
.GetModel()->GetAbsPos(pEntry
));
861 String
aName( aCategoryBox
.GetText() );
863 pOpt
->SetCategory(aEmptyStr
);
866 aName
.EraseLeadingChars (' ');
867 aName
.EraseTrailingChars(' ');
868 pOpt
->SetCategory(aName
);
870 pOpt
->SetNumType((USHORT
)(ULONG
)aFormatBox
.GetEntryData(aFormatBox
.GetSelectEntryPos()));
871 pOpt
->SetCaption(aTextEdit
.IsEnabled() ? aTextEdit
.GetText() : aEmptyStr
);
872 pOpt
->SetPos(aPosBox
.GetSelectEntryPos());
873 USHORT nPos
= aLbLevel
.GetSelectEntryPos();
874 USHORT nLevel
= ( nPos
> 0 && nPos
!= LISTBOX_ENTRY_NOTFOUND
) ? nPos
- 1 : MAXLEVEL
;
875 pOpt
->SetLevel(nLevel
);
876 pOpt
->SetSeparator(aEdDelim
.GetText());
877 pOpt
->SetNumSeparator( aNumberingSeparatorED
.GetText());
878 if(!aCharStyleLB
.GetSelectEntryPos())
879 pOpt
->SetCharacterStyle(aEmptyStr
);
881 pOpt
->SetCharacterStyle(aCharStyleLB
.GetSelectEntry());
882 pOpt
->CopyAttributes() = aApplyBorderCB
.IsChecked();
886 /* -----------------26.10.98 11:06-------------------
888 * --------------------------------------------------*/
890 IMPL_LINK( SwCaptionOptPage
, ModifyHdl
, Edit
*, EMPTYARG
)
892 String sFldTypeName
= aCategoryBox
.GetText();
894 SwFieldType* pType = sFldTypeName.Len() ? pMgr->GetFldType(RES_SETEXPFLD, sFldTypeName) : 0;
896 ((SfxSingleTabDialog*)GetParent())->GetOKButton()->Enable( (!pType || ((SwSetExpFieldType*)pType)->GetType() == GSE_SEQ)
897 && sFldTypeName.Len() != 0 );
899 SfxSingleTabDialog
*pDlg
= (SfxSingleTabDialog
*)GetParent();
900 PushButton
*pBtn
= pDlg
->GetOKButton();
902 pBtn
->Enable(sFldTypeName
.Len() != 0);
903 sal_Bool bEnable
= aCategoryBox
.IsEnabled() && sFldTypeName
!= sNone
;
905 aFormatText
.Enable(bEnable
);
906 aFormatBox
.Enable(bEnable
);
907 aTextText
.Enable(bEnable
);
908 aTextEdit
.Enable(bEnable
);
914 /* -----------------26.10.98 10:58-------------------
916 * --------------------------------------------------*/
918 IMPL_LINK_INLINE_START( SwCaptionOptPage
, SelectHdl
, ListBox
*, EMPTYARG
)
923 IMPL_LINK_INLINE_END( SwCaptionOptPage
, SelectHdl
, ListBox
*, EMPTYARG
)
924 /*-- 02.11.2007 10:00:36---------------------------------------------------
926 -----------------------------------------------------------------------*/
927 IMPL_LINK( SwCaptionOptPage
, OrderHdl
, ListBox
*, pBox
)
930 sal_Int32 nPos
= pBox
->GetSelectEntryPos();
931 aNumberingSeparatorFT
.Enable( nPos
== 1 );
932 aNumberingSeparatorED
.Enable( nPos
== 1 );
935 /* -----------------26.10.98 10:58-------------------
937 * --------------------------------------------------*/
939 void SwCaptionOptPage::DrawSample()
943 if( aCategoryBox
.GetText() != sNone
)
945 //#i61007# order of captions
946 bool bOrderNumberingFirst
= aLbCaptionOrder
.GetSelectEntryPos() == 1;
948 USHORT nNumFmt
= (USHORT
)(ULONG
)aFormatBox
.GetEntryData(
949 aFormatBox
.GetSelectEntryPos() );
950 if( SVX_NUM_NUMBER_NONE
!= nNumFmt
)
952 //#i61007# order of captions
953 if( !bOrderNumberingFirst
)
956 aStr
+= aCategoryBox
.GetText();
960 SwWrtShell
*pSh
= ::GetActiveWrtShell();
961 String
sFldTypeName( aCategoryBox
.GetText() );
964 SwSetExpFieldType
* pFldType
= (SwSetExpFieldType
*)pMgr
->GetFldType(
965 RES_SETEXPFLD
, sFldTypeName
);
966 if( pFldType
&& pFldType
->GetOutlineLvl() < MAXLEVEL
)
968 BYTE nLvl
= pFldType
->GetOutlineLvl();
969 SwNumberTree::tNumberVector aNumVector
;
970 for( BYTE i
= 0; i
<= nLvl
; ++i
)
971 aNumVector
.push_back(1);
973 String
sNumber( pSh
->GetOutlineNumRule()->MakeNumString(
974 aNumVector
, FALSE
));
976 (aStr
+= sNumber
) += pFldType
->GetDelimiter();
982 case SVX_NUM_CHARS_UPPER_LETTER
: aStr
+= 'A'; break;
983 case SVX_NUM_CHARS_UPPER_LETTER_N
: aStr
+= 'A'; break;
984 case SVX_NUM_CHARS_LOWER_LETTER
: aStr
+= 'a'; break;
985 case SVX_NUM_CHARS_LOWER_LETTER_N
: aStr
+= 'a'; break;
986 case SVX_NUM_ROMAN_UPPER
: aStr
+= 'I'; break;
987 case SVX_NUM_ROMAN_LOWER
: aStr
+= 'i'; break;
989 default: aStr
+= '1'; break;
992 //#i61007# order of captions
993 if( bOrderNumberingFirst
)
995 aStr
+= aNumberingSeparatorED
.GetText();
996 aStr
+= aCategoryBox
.GetText();
998 aStr
+= aTextEdit
.GetText();
1000 aPreview
.SetPreviewText( aStr
);
1003 /*------------------------------------------------------------------------
1004 Beschreibung: ComboBox ohne Spaces
1005 ------------------------------------------------------------------------*/
1007 void CaptionComboBox::KeyInput(const KeyEvent
& rEvt
)
1009 if( rEvt
.GetKeyCode().GetCode() != KEY_SPACE
)
1010 SwComboBox::KeyInput(rEvt
);