blob: 9daaec52028d52aa91736cec9573e7d7e1be16e7 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
#ifdef SW_DLLIMPLEMENTATION
#undef SW_DLLIMPLEMENTATION
#endif
#ifndef _SVSTDARR_HXX
#define _SVSTDARR_STRINGSDTOR
#include <svl/svstdarr.hxx>
#endif
#include <optpage.hxx>
#include <doc.hxx>
#include <hintids.hxx>
#include <cmdid.h>
#include <fmtcol.hxx>
#include <charatr.hxx>
#include <swtypes.hxx>
#include <view.hxx>
#include <docsh.hxx>
#include <IDocumentDeviceAccess.hxx>
#include <swmodule.hxx>
#include <wrtsh.hxx>
#include <uitool.hxx>
#include <cfgitems.hxx>
#include <poolfmt.hxx>
#include <uiitems.hxx>
#include <initui.hxx>
#include <printdata.hxx>
#include <modcfg.hxx>
#include <srcview.hxx>
#include <crstate.hxx>
#include <viewopt.hxx>
#include <globals.hrc>
#include <config.hrc>
#include <redlopt.hrc>
#include <optdlg.hrc>
#include <swwrtshitem.hxx>
#include <unomid.h>
#include <editeng/fhgtitem.hxx>
#include <editeng/fontitem.hxx>
#include <editeng/langitem.hxx>
#include <sfx2/request.hxx>
#include <sfx2/printer.hxx>
#include <sfx2/bindings.hxx>
#include <svl/slstitm.hxx>
#include <svl/ctloptions.hxx>
#include <svl/eitem.hxx>
#include <svl/cjkoptions.hxx>
#include <svtools/ctrltool.hxx>
#include <svx/htmlmode.hxx>
#include <svx/xtable.hxx>
#include <svx/dlgutil.hxx>
#include <svx/strarray.hxx>
#include <vcl/svapp.hxx>
using namespace ::com::sun::star;
/*******************************************************
******************************************************/
/*-----------------31.08.96 10.16-------------------
TabPage Anzeige/Inhalt
--------------------------------------------------*/
SwContentOptPage::SwContentOptPage( Window* pParent,
const SfxItemSet& rCoreSet ) :
SfxTabPage( pParent, SW_RES( TP_CONTENT_OPT ), rCoreSet ),
aLineFL ( this, SW_RES( FL_LINE ) ),
aCrossCB ( this, SW_RES( CB_CROSS ) ),
aSolidHandleCB( this, SW_RES( CB_HANDLE ) ),
aBigHandleCB ( this, SW_RES( CB_BIGHANDLE) ),
aWindowFL ( this, SW_RES( FL_WINDOW ) ),
aHScrollBox ( this, SW_RES( CB_HSCROLL ) ),
aVScrollBox ( this, SW_RES( CB_VSCROLL ) ),
aAnyRulerCB ( this, SW_RES( CB_ANY_RULER ) ),
aHRulerCBox ( this, SW_RES( CB_HRULER ) ),
aHMetric ( this, SW_RES( LB_HMETRIC ) ),
aVRulerCBox ( this, SW_RES( CB_VRULER ) ),
aVRulerRightCBox( this, SW_RES( CB_VRULER_RIGHT ) ),
aVMetric ( this, SW_RES( LB_VMETRIC ) ),
aSmoothCBox ( this, SW_RES( CB_SMOOTH_SCROLL ) ),
aDispFL ( this, SW_RES( FL_DISP ) ),
aGrfCB ( this, SW_RES( CB_GRF ) ),
aTblCB ( this, SW_RES( CB_TBL ) ),
aDrwCB ( this, SW_RES( CB_DRWFAST ) ),
aFldNameCB ( this, SW_RES( CB_FIELD ) ),
aPostItCB ( this, SW_RES( CB_POSTIT ) ),
aSettingsFL ( this, SW_RES( FL_SETTINGS ) ),
aMetricFT ( this, SW_RES( FT_METRIC ) ),
aMetricLB ( this, SW_RES( LB_METRIC ) )
{
FreeResource();
const SfxPoolItem* pItem;
if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
&& ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
{
aMetricLB.Show();
aSettingsFL.Show();
aMetricFT.Show();
}
SvtCJKOptions aCJKOptions;
if(aCJKOptions.IsVerticalTextEnabled() )
{
Point aSmoothPos(aSmoothCBox.GetPosPixel());
aSmoothPos.Y() += aSmoothPos.Y() - aVRulerCBox.GetPosPixel().Y();
aSmoothCBox.SetPosPixel(aSmoothPos);
}
else
aVRulerRightCBox.Hide();
aVRulerCBox.SetClickHdl(LINK(this, SwContentOptPage, VertRulerHdl ));
aAnyRulerCB.SetClickHdl(LINK(this, SwContentOptPage, AnyRulerHdl));
SvxStringArray aMetricArr( SW_RES( STR_ARR_METRIC ) );
for ( sal_uInt16 i = 0; i < aMetricArr.Count(); ++i )
{
String sMetric = aMetricArr.GetStringByPos( i );
FieldUnit eFUnit = (FieldUnit)aMetricArr.GetValue( i );
switch ( eFUnit )
{
case FUNIT_MM:
case FUNIT_CM:
case FUNIT_POINT:
case FUNIT_PICA:
case FUNIT_INCH:
{
// nur diese Metriken benutzen
sal_uInt16 nPos = aMetricLB.InsertEntry( sMetric );
aMetricLB.SetEntryData( nPos, (void*)(long)eFUnit );
aVMetric.InsertEntry( sMetric );
aVMetric.SetEntryData( nPos, (void*)(long)eFUnit );
aHMetric.InsertEntry( sMetric );
aHMetric.SetEntryData( nPos, (void*)(long)eFUnit );
}
default:;//prevent warning
}
}
}
/*-----------------31.08.96 13.58-------------------
--------------------------------------------------*/
SwContentOptPage::~SwContentOptPage()
{
}
/*-----------------31.08.96 13.58-------------------
--------------------------------------------------*/
SfxTabPage* SwContentOptPage::Create( Window* pParent,
const SfxItemSet& rAttrSet)
{
return new SwContentOptPage(pParent, rAttrSet);
}
/* -----------------------------07.04.01 16:57--------------------------------
---------------------------------------------------------------------------*/
static void lcl_SelectMetricLB(ListBox& rMetric, sal_uInt16 nSID, const SfxItemSet& rSet)
{
const SfxPoolItem* pItem;
if( rSet.GetItemState( nSID, sal_False, &pItem ) >= SFX_ITEM_AVAILABLE )
{
FieldUnit eFieldUnit = (FieldUnit)((SfxUInt16Item*)pItem)->GetValue();
for ( sal_uInt16 i = 0; i < rMetric.GetEntryCount(); ++i )
{
if ( (int)(sal_IntPtr)rMetric.GetEntryData( i ) == (int)eFieldUnit )
{
rMetric.SelectEntryPos( i );
break;
}
}
}
rMetric.SaveValue();
}
/*-----------------31.08.96 13.58-------------------
--------------------------------------------------*/
void SwContentOptPage::Reset(const SfxItemSet& rSet)
{
const SwElemItem* pElemAttr = 0;
rSet.GetItemState( FN_PARAM_ELEM , sal_False,
(const SfxPoolItem**)&pElemAttr );
if(pElemAttr)
{
aTblCB .Check (pElemAttr->bTable );
aGrfCB .Check (pElemAttr->bGraphic );
aDrwCB .Check (pElemAttr->bDrawing );
aFldNameCB .Check (pElemAttr->bFieldName );
aPostItCB .Check (pElemAttr->bNotes );
aCrossCB .Check( pElemAttr->bCrosshair );
aSolidHandleCB.Check( !pElemAttr->bHandles );
aBigHandleCB.Check(pElemAttr->bBigHandles );
aHScrollBox.Check( pElemAttr->bHorzScrollbar );
aVScrollBox.Check( pElemAttr->bVertScrollbar );
aAnyRulerCB.Check( pElemAttr->bAnyRuler );
aHRulerCBox.Check( pElemAttr->bHorzRuler );
aVRulerCBox.Check( pElemAttr->bVertRuler );
aVRulerRightCBox.Check(pElemAttr->bVertRulerRight);
aSmoothCBox.Check( pElemAttr->bSmoothScroll );
}
aMetricLB.SetNoSelection();
lcl_SelectMetricLB(aMetricLB, SID_ATTR_METRIC, rSet);
lcl_SelectMetricLB(aHMetric, FN_HSCROLL_METRIC, rSet);
lcl_SelectMetricLB(aVMetric, FN_VSCROLL_METRIC, rSet);
AnyRulerHdl(&aAnyRulerCB);
}
/*-----------------31.08.96 13.58-------------------
--------------------------------------------------*/
sal_Bool SwContentOptPage::FillItemSet(SfxItemSet& rSet)
{
const SwElemItem* pOldAttr = (const SwElemItem*)
GetOldItem(GetItemSet(), FN_PARAM_ELEM);
SwElemItem aElem;
if(pOldAttr)
aElem = *pOldAttr;
aElem.bTable = aTblCB .IsChecked();
aElem.bGraphic = aGrfCB .IsChecked();
aElem.bDrawing = aDrwCB .IsChecked();
aElem.bFieldName = aFldNameCB .IsChecked();
aElem.bNotes = aPostItCB .IsChecked();
aElem.bCrosshair = aCrossCB .IsChecked();
aElem.bHandles = !aSolidHandleCB.IsChecked();
aElem.bBigHandles = aBigHandleCB.IsChecked();
aElem.bHorzScrollbar = aHScrollBox.IsChecked();
aElem.bVertScrollbar = aVScrollBox.IsChecked();
aElem.bAnyRuler = aAnyRulerCB.IsChecked();
aElem.bHorzRuler = aHRulerCBox.IsChecked();
aElem.bVertRuler = aVRulerCBox.IsChecked();
aElem.bVertRulerRight= aVRulerRightCBox.IsChecked();
aElem.bSmoothScroll = aSmoothCBox.IsChecked();
sal_Bool bRet = !pOldAttr || aElem != *pOldAttr;
if(bRet)
bRet = 0 != rSet.Put(aElem);
sal_uInt16 nMPos = aMetricLB.GetSelectEntryPos();
sal_uInt16 nGlobalMetricPos = nMPos;
if ( nMPos != aMetricLB.GetSavedValue() )
{
// Doppel-Cast fuer VA3.0
sal_uInt16 nFieldUnit = (sal_uInt16)(long)aMetricLB.GetEntryData( nMPos );
rSet.Put( SfxUInt16Item( SID_ATTR_METRIC, (sal_uInt16)nFieldUnit ) );
bRet = sal_True;
}
nMPos = aHMetric.GetSelectEntryPos();
if ( nMPos != aHMetric.GetSavedValue() || nMPos != nGlobalMetricPos )
{
// Doppel-Cast fuer VA3.0
sal_uInt16 nFieldUnit = (sal_uInt16)(long)aHMetric.GetEntryData( nMPos );
rSet.Put( SfxUInt16Item( FN_HSCROLL_METRIC, (sal_uInt16)nFieldUnit ) );
bRet = sal_True;
}
nMPos = aVMetric.GetSelectEntryPos();
if ( nMPos != aVMetric.GetSavedValue() || nMPos != nGlobalMetricPos )
{
// Doppel-Cast fuer VA3.0
sal_uInt16 nFieldUnit = (sal_uInt16)(long)aVMetric.GetEntryData( nMPos );
rSet.Put( SfxUInt16Item( FN_VSCROLL_METRIC, (sal_uInt16)nFieldUnit ) );
bRet = sal_True;
}
return bRet;
}
/* -----------------------------05.03.2002 15:07------------------------------
---------------------------------------------------------------------------*/
IMPL_LINK(SwContentOptPage, VertRulerHdl, CheckBox*, pBox)
{
aVRulerRightCBox.Enable(pBox->IsEnabled() && pBox->IsChecked());
return 0;
}
/* -----------------20.09.2002 11:30-----------------
*
* --------------------------------------------------*/
IMPL_LINK( SwContentOptPage, AnyRulerHdl, CheckBox*, pBox)
{
sal_Bool bChecked = pBox->IsChecked();
aHRulerCBox .Enable(bChecked);
aHMetric .Enable(bChecked);
aVRulerCBox .Enable(bChecked);
aVMetric .Enable(bChecked);
VertRulerHdl(&aVRulerCBox);
return 0;
}
/*----------------- OS 27.01.95 -----------------------
TabPage Drucker Zusatzeinstellungen
-------------------------------------------------------*/
SwAddPrinterTabPage::SwAddPrinterTabPage( Window* pParent,
const SfxItemSet& rCoreSet) :
SfxTabPage( pParent, SW_RES( TP_OPTPRINT_PAGE ), rCoreSet),
aFL1 (this, SW_RES(FL_1)),
aGrfCB (this, SW_RES(CB_PGRF)),
// aTabCB (this, SW_RES(CB_PTAB)),
// aDrawCB (this, SW_RES(CB_PDRAW)),
aCtrlFldCB (this, SW_RES(CB_CTRLFLD)),
aBackgroundCB (this, SW_RES(CB_BACKGROUND)),
aBlackFontCB (this, SW_RES(CB_BLACK_FONT)),
aPrintHiddenTextCB(this, SW_RES(CB_HIDDEN_TEXT)),
aPrintTextPlaceholderCB(this, SW_RES(CB_TEXT_PLACEHOLDER)),
aSeparatorLFL (this, SW_RES(FL_SEP_PRT_LEFT )),
aFL2 (this, SW_RES(FL_2)),
aLeftPageCB (this, SW_RES(CB_LEFTP)),
aRightPageCB (this, SW_RES(CB_RIGHTP)),
// aReverseCB (this, SW_RES(CB_REVERSE)),
aProspectCB (this, SW_RES(CB_PROSPECT)),
aProspectCB_RTL (this, SW_RES(CB_PROSPECT_RTL)),
aSeparatorRFL (this, SW_RES(FL_SEP_PRT_RIGHT)),
aFL3 (this, SW_RES(FL_3)),
aNoRB (this, SW_RES(RB_NO)),
aOnlyRB (this, SW_RES(RB_ONLY)),
aEndRB (this, SW_RES(RB_END)),
aEndPageRB (this, SW_RES(RB_PAGEEND)),
aFL4 (this, SW_RES(FL_4)),
aPrintEmptyPagesCB(this, SW_RES(CB_PRINTEMPTYPAGES)),
// aSingleJobsCB (this, SW_RES(CB_SINGLEJOBS)),
aPaperFromSetupCB(this, SW_RES(CB_PAPERFROMSETUP)),
aFaxFT (this, SW_RES(FT_FAX)),
aFaxLB (this, SW_RES(LB_FAX)),
sNone(SW_RES(ST_NONE)),
bAttrModified( sal_False ),
bPreview ( sal_False )
{
Init();
FreeResource();
Link aLk = LINK( this, SwAddPrinterTabPage, AutoClickHdl);
aGrfCB.SetClickHdl( aLk );
aRightPageCB.SetClickHdl( aLk );
aLeftPageCB.SetClickHdl( aLk );
// aTabCB.SetClickHdl( aLk );
// aDrawCB.SetClickHdl( aLk );
aCtrlFldCB.SetClickHdl( aLk );
aBackgroundCB.SetClickHdl( aLk );
aBlackFontCB.SetClickHdl( aLk );
aPrintHiddenTextCB.SetClickHdl( aLk );
aPrintTextPlaceholderCB.SetClickHdl( aLk );
// aReverseCB.SetClickHdl( aLk );
aProspectCB.SetClickHdl( aLk );
aProspectCB_RTL.SetClickHdl( aLk );
aPaperFromSetupCB.SetClickHdl( aLk );
aPrintEmptyPagesCB.SetClickHdl( aLk );
aEndPageRB.SetClickHdl( aLk );
aEndRB.SetClickHdl( aLk );
aOnlyRB.SetClickHdl( aLk );
aNoRB.SetClickHdl( aLk );
// aSingleJobsCB.SetClickHdl( aLk );
aFaxLB.SetSelectHdl( LINK( this, SwAddPrinterTabPage, SelectHdl ) );
const SfxPoolItem* pItem;
if(SFX_ITEM_SET == rCoreSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
&& ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
{
// aDrawCB .Hide();
aLeftPageCB .Hide();
aRightPageCB .Hide();
aPrintHiddenTextCB.Hide();
aPrintTextPlaceholderCB.Hide();
// aReverseCB.SetPosPixel(aLeftPageCB.GetPosPixel());
aProspectCB.SetPosPixel(aLeftPageCB.GetPosPixel());
Point aPt( aRightPageCB.GetPosPixel() );
aPt.setX(aPt.getX() + 15); // indent
aProspectCB_RTL.SetPosPixel(aPt);
// aBlackFontCB.SetPosPixel(aBackgroundCB.GetPosPixel());
// aPrintHiddenTextCB.SetPosPixel(aBlackFontCB.GetPosPixel());
// aBackgroundCB.SetPosPixel(aCtrlFldCB.GetPosPixel());
// aCtrlFldCB.SetPosPixel(aDrawCB.GetPosPixel());
// hide aPrintEmptyPagesCB and move everything below up accordingly
long nDeltaY = aPaperFromSetupCB.GetPosPixel().getY() - aPrintEmptyPagesCB.GetPosPixel().getY();
aPrintEmptyPagesCB.Hide();
aPt = aPaperFromSetupCB.GetPosPixel();
aPt.setY( aPt.getY() - nDeltaY );
aPaperFromSetupCB.SetPosPixel( aPt );
aPt = aFaxFT.GetPosPixel();
aPt.setY( aPt.getY() - nDeltaY );
aFaxFT.SetPosPixel( aPt );
aPt = aFaxLB.GetPosPixel();
aPt.setY( aPt.getY() - nDeltaY );
aFaxLB.SetPosPixel( aPt );
}
aProspectCB_RTL.Disable();
SvtCTLOptions aCTLOptions;
aProspectCB_RTL.Show(aCTLOptions.IsCTLFontEnabled());
}
//------------------------------------------------------------------------
void SwAddPrinterTabPage::SetPreview(sal_Bool bPrev)
{
bPreview = bPrev;
if (bPreview)
{
aLeftPageCB.Disable();
aRightPageCB.Disable();
aProspectCB.Disable();
aProspectCB_RTL.Disable();
aFL3.Disable();
aNoRB.Disable();
aOnlyRB.Disable();
aEndRB.Disable();
aEndPageRB.Disable();
}
}
//------------------------------------------------------------------------
SfxTabPage* SwAddPrinterTabPage::Create( Window* pParent,
const SfxItemSet& rAttrSet )
{
return ( new SwAddPrinterTabPage( pParent, rAttrSet ) );
}
//------------------------------------------------------------------------
sal_Bool SwAddPrinterTabPage::FillItemSet( SfxItemSet& rCoreSet )
{
if ( bAttrModified )
{
SwAddPrinterItem aAddPrinterAttr (FN_PARAM_ADDPRINTER);
aAddPrinterAttr.bPrintGraphic = aGrfCB.IsChecked();
aAddPrinterAttr.bPrintTable = sal_True; // always enabled since CWS printerpullgpages /*aTabCB.IsChecked();*/
aAddPrinterAttr.bPrintDraw = aGrfCB.IsChecked(); // UI merged with aGrfCB in CWS printerpullgpages /*aDrawCB.IsChecked()*/;
aAddPrinterAttr.bPrintControl = aCtrlFldCB.IsChecked();
aAddPrinterAttr.bPrintPageBackground = aBackgroundCB.IsChecked();
aAddPrinterAttr.bPrintBlackFont = aBlackFontCB.IsChecked();
aAddPrinterAttr.bPrintHiddenText = aPrintHiddenTextCB.IsChecked();
aAddPrinterAttr.bPrintTextPlaceholder = aPrintTextPlaceholderCB.IsChecked();
aAddPrinterAttr.bPrintLeftPages = aLeftPageCB.IsChecked();
aAddPrinterAttr.bPrintRightPages = aRightPageCB.IsChecked();
aAddPrinterAttr.bPrintReverse = sal_False; // handled by vcl itself since CWS printerpullpages /*aReverseCB.IsChecked()*/;
aAddPrinterAttr.bPrintProspect = aProspectCB.IsChecked();
aAddPrinterAttr.bPrintProspectRTL = aProspectCB_RTL.IsChecked();
aAddPrinterAttr.bPaperFromSetup = aPaperFromSetupCB.IsChecked();
aAddPrinterAttr.bPrintEmptyPages = aPrintEmptyPagesCB.IsChecked();
aAddPrinterAttr.bPrintSingleJobs = sal_True; // handled by vcl in new print dialog since CWS printerpullpages /*aSingleJobsCB.IsChecked()*/;
if (aNoRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
POSTITS_NONE;
if (aOnlyRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
POSTITS_ONLY;
if (aEndRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
POSTITS_ENDDOC;
if (aEndPageRB.IsChecked()) aAddPrinterAttr.nPrintPostIts =
POSTITS_ENDPAGE;
String sFax = aFaxLB.GetSelectEntry();
aAddPrinterAttr.sFaxName = sNone == sFax ? aEmptyStr : sFax;
rCoreSet.Put(aAddPrinterAttr);
}
return bAttrModified;
}
//------------------------------------------------------------------------
void SwAddPrinterTabPage::Reset( const SfxItemSet& )
{
const SfxItemSet& rSet = GetItemSet();
const SwAddPrinterItem* pAddPrinterAttr = 0;
if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_ADDPRINTER , sal_False,
(const SfxPoolItem**)&pAddPrinterAttr ))
{
aGrfCB.Check( pAddPrinterAttr->bPrintGraphic || pAddPrinterAttr->bPrintDraw );
// aTabCB.Check( pAddPrinterAttr->bPrintTable);
// aDrawCB.Check( pAddPrinterAttr->bPrintDraw);
aCtrlFldCB.Check( pAddPrinterAttr->bPrintControl);
aBackgroundCB.Check( pAddPrinterAttr->bPrintPageBackground);
aBlackFontCB.Check( pAddPrinterAttr->bPrintBlackFont);
aPrintHiddenTextCB.Check( pAddPrinterAttr->bPrintHiddenText);
aPrintTextPlaceholderCB.Check(pAddPrinterAttr->bPrintTextPlaceholder);
aLeftPageCB.Check( pAddPrinterAttr->bPrintLeftPages);
aRightPageCB.Check( pAddPrinterAttr->bPrintRightPages);
// aReverseCB.Check( pAddPrinterAttr->bPrintReverse);
aPaperFromSetupCB.Check(pAddPrinterAttr->bPaperFromSetup);
aPrintEmptyPagesCB.Check(pAddPrinterAttr->bPrintEmptyPages);
aProspectCB.Check( pAddPrinterAttr->bPrintProspect);
aProspectCB_RTL.Check( pAddPrinterAttr->bPrintProspectRTL);
// aSingleJobsCB.Check( pAddPrinterAttr->bPrintSingleJobs);
aNoRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_NONE ) ;
aOnlyRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ONLY ) ;
aEndRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDDOC ) ;
aEndPageRB.Check (pAddPrinterAttr->nPrintPostIts== POSTITS_ENDPAGE ) ;
aFaxLB.SelectEntry( pAddPrinterAttr->sFaxName );
}
if (aProspectCB.IsChecked())
{
aProspectCB_RTL.Enable(sal_True);
aNoRB.Enable( sal_False );
aOnlyRB.Enable( sal_False );
aEndRB.Enable( sal_False );
aEndPageRB.Enable( sal_False );
}
else
aProspectCB_RTL.Enable( sal_False );
}
//-----------------------------------------------------------------------
void SwAddPrinterTabPage::Init()
{
}
//------------------------------------------------------------------------
IMPL_LINK_INLINE_START( SwAddPrinterTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
{
bAttrModified = sal_True;
bool bIsProspect = aProspectCB.IsChecked();
if (!bIsProspect)
aProspectCB_RTL.Check( sal_False );
aProspectCB_RTL.Enable( bIsProspect );
aNoRB.Enable( !bIsProspect );
aOnlyRB.Enable( !bIsProspect );
aEndRB.Enable( !bIsProspect );
aEndPageRB.Enable( !bIsProspect );
return 0;
}
IMPL_LINK_INLINE_END( SwAddPrinterTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
//------------------------------------------------------------------------
void SwAddPrinterTabPage::SetFax( const SvStringsDtor& rFaxLst )
{
aFaxLB.InsertEntry(sNone);
for ( sal_uInt16 i = 0; i < rFaxLst.Count(); ++i )
aFaxLB.InsertEntry( *rFaxLst.GetObject(i) );
aFaxLB.SelectEntryPos(0);
}
//------------------------------------------------------------------------
IMPL_LINK_INLINE_START( SwAddPrinterTabPage, SelectHdl, ListBox *, EMPTYARG )
{
bAttrModified=sal_True;
return 0;
}
IMPL_LINK_INLINE_END( SwAddPrinterTabPage, SelectHdl, ListBox *, EMPTYARG )
void SwAddPrinterTabPage::PageCreated (SfxAllItemSet aSet)
{
//SFX_ITEMSET_ARG (&aSet,pListItem,SfxStringListItem,SID_FAX_LIST,sal_False);
SFX_ITEMSET_ARG (&aSet,pListItem,SfxBoolItem,SID_FAX_LIST,sal_False);
SFX_ITEMSET_ARG (&aSet,pPreviewItem,SfxBoolItem,SID_PREVIEWFLAG_TYPE,sal_False);
if (pPreviewItem)
{
SetPreview(pPreviewItem->GetValue());
Reset(aSet);
}
if (pListItem && pListItem->GetValue())
{
SvStringsDtor aFaxList;
const std::vector<rtl::OUString>& rPrinters = Printer::GetPrinterQueues();
for (unsigned int i = 0; i < rPrinters.size(); ++i)
{
String* pString = new String( rPrinters[i] );
String* &rpString = pString;
aFaxList.Insert(rpString, 0);
}
SetFax( aFaxList );
/* SvStringsDtor aFaxList;
const List *pList = (pListItem)->GetList();
sal_uInt32 nCount = pList->Count();
for(sal_uInt32 i = 0; i < nCount ; i++)
{
String* pString = (String*)(pList->GetObject(i));
String* &rpString = pString;
aFaxList.Insert(rpString, 0 );
}
SetFax(aFaxList);
*/
}
}
/*-----------------03.09.96 11.53-------------------
Tabpage Standardfonts
--------------------------------------------------*/
SwStdFontTabPage::SwStdFontTabPage( Window* pParent,
const SfxItemSet& rSet ) :
SfxTabPage( pParent, SW_RES( TP_STD_FONT ), rSet),
aStdChrFL (this, SW_RES(FL_STDCHR )),
aTypeFT( this, SW_RES( FT_TYPE )),
aStandardLbl(this, SW_RES(FT_STANDARD)),
aStandardBox(this, SW_RES(LB_STANDARD)),
aHeightFT( this, SW_RES( FT_SIZE )),
aStandardHeightLB(this, SW_RES( LB_STANDARD_SIZE )),
aTitleLbl (this, SW_RES(FT_TITLE )),
aTitleBox (this, SW_RES(LB_TITLE )),
aTitleHeightLB( this, SW_RES( LB_TITLE_SIZE )),
aListLbl (this, SW_RES(FT_LIST )),
aListBox (this, SW_RES(LB_LIST )),
aListHeightLB( this, SW_RES( LB_LIST_SIZE )),
aLabelLbl (this, SW_RES(FT_LABEL )),
aLabelBox (this, SW_RES(LB_LABEL )),
aLabelHeightLB( this, SW_RES( LB_LABEL_SIZE )),
aIdxLbl (this, SW_RES(FT_IDX )),
aIdxBox (this, SW_RES(LB_IDX )),
aIndexHeightLB( this, SW_RES( LB_INDEX_SIZE )),
aDocOnlyCB (this, SW_RES(CB_DOCONLY )),
aStandardPB (this, SW_RES(PB_STANDARD)),
pPrt(0),
pFontList(0),
pFontConfig(0),
pWrtShell(0),
eLanguage( GetAppLanguage() ),
bListDefault(sal_False),
bSetListDefault(sal_True),
bLabelDefault(sal_False),
bSetLabelDefault(sal_True),
bIdxDefault(sal_False),
bSetIdxDefault(sal_True),
bDeletePrinter(sal_False),
bListHeightDefault (sal_False),
bSetListHeightDefault (sal_False),
bLabelHeightDefault (sal_False),
bSetLabelHeightDefault(sal_False),
bIndexHeightDefault (sal_False),
bSetIndexHeightDefault (sal_False),
nFontGroup(FONT_GROUP_DEFAULT),
sScriptWestern(SW_RES(ST_SCRIPT_WESTERN)),
sScriptAsian(SW_RES(ST_SCRIPT_ASIAN)),
sScriptComplex(SW_RES(ST_SCRIPT_CTL))
{
FreeResource();
aStandardPB.SetClickHdl(LINK(this, SwStdFontTabPage, StandardHdl));
aStandardBox.SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
aListBox .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
aLabelBox .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
aIdxBox .SetModifyHdl( LINK(this, SwStdFontTabPage, ModifyHdl));
Link aFocusLink = LINK( this, SwStdFontTabPage, LoseFocusHdl);
aStandardBox.SetLoseFocusHdl( aFocusLink );
aTitleBox .SetLoseFocusHdl( aFocusLink );
aListBox .SetLoseFocusHdl( aFocusLink );
aLabelBox .SetLoseFocusHdl( aFocusLink );
aIdxBox .SetLoseFocusHdl( aFocusLink );
Link aModifyHeightLink( LINK( this, SwStdFontTabPage, ModifyHeightHdl));
aStandardHeightLB.SetModifyHdl( aModifyHeightLink );
aTitleHeightLB. SetModifyHdl( aModifyHeightLink );
aListHeightLB. SetModifyHdl( aModifyHeightLink );
aLabelHeightLB. SetModifyHdl( aModifyHeightLink );
aIndexHeightLB. SetModifyHdl( aModifyHeightLink );
aDocOnlyCB.Check(SW_MOD()->GetModuleConfig()->IsDefaultFontInCurrDocOnly());
}
/*-----------------03.09.96 11.53-------------------
--------------------------------------------------*/
SwStdFontTabPage::~SwStdFontTabPage()
{
if(bDeletePrinter)
delete pPrt;
}
/*-----------------03.09.96 11.53-------------------
--------------------------------------------------*/
SfxTabPage* SwStdFontTabPage::Create( Window* pParent,
const SfxItemSet& rAttrSet )
{
return new SwStdFontTabPage(pParent, rAttrSet);
}
/*-----------------03.09.96 11.53-------------------
--------------------------------------------------*/
void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
SfxPrinter* pPrt, const String& rStyle,
sal_uInt16 nFontWhich)
{
Font aFont( rStyle, Size( 0, 10 ) );
if( pPrt )
aFont = pPrt->GetFontMetric( aFont );
SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
pColl->SetFmtAttr(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
aEmptyStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
}
/*-- 11.10.2005 15:47:52---------------------------------------------------
-----------------------------------------------------------------------*/
void lcl_SetColl(SwWrtShell* pWrtShell, sal_uInt16 nType,
sal_Int32 nHeight, sal_uInt16 nFontHeightWhich)
{
float fSize = (float)nHeight / 10;
nHeight = CalcToUnit( fSize, SFX_MAPUNIT_TWIP );
SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(nType);
pColl->SetFmtAttr(SvxFontHeightItem(nHeight, 100, nFontHeightWhich));
}
/*-----------------03.09.96 11.53-------------------
--------------------------------------------------*/
sal_Bool SwStdFontTabPage::FillItemSet( SfxItemSet& )
{
sal_Bool bNotDocOnly = !aDocOnlyCB.IsChecked();
SW_MOD()->GetModuleConfig()->SetDefaultFontInCurrDocOnly(!bNotDocOnly);
String sStandard = aStandardBox.GetText();
String sTitle = aTitleBox .GetText();
String sList = aListBox .GetText();
String sLabel = aLabelBox .GetText();
String sIdx = aIdxBox .GetText();
String sStandardBak = aStandardBox.GetSavedValue();
String sTitleBak = aTitleBox .GetSavedValue();
String sListBak = aListBox .GetSavedValue();
String sLabelBak = aLabelBox .GetSavedValue();
String sIdxBak = aIdxBox .GetSavedValue();
bool bStandardHeightChanged = aStandardHeightLB.GetSavedValue() != aStandardHeightLB.GetText();
bool bTitleHeightChanged = aTitleHeightLB.GetSavedValue() != aTitleHeightLB.GetText();
bool bListHeightChanged = aListHeightLB.GetSavedValue() != aListHeightLB.GetText() && (!bListHeightDefault || !bSetListHeightDefault );
bool bLabelHeightChanged = aLabelHeightLB.GetSavedValue() != aLabelHeightLB.GetText() && (!bLabelHeightDefault || !bSetLabelHeightDefault );
bool bIndexHeightChanged = aIndexHeightLB.GetSavedValue() != aIndexHeightLB.GetText() && (!bIndexHeightDefault || !bSetIndexHeightDefault );
if(bNotDocOnly)
{
pFontConfig->SetFontStandard(sStandard, nFontGroup);
pFontConfig->SetFontOutline(sTitle, nFontGroup);
pFontConfig->SetFontList(sList, nFontGroup);
pFontConfig->SetFontCaption(sLabel, nFontGroup);
pFontConfig->SetFontIndex(sIdx, nFontGroup);
if(bStandardHeightChanged)
{
float fSize = (float)aStandardHeightLB.GetValue() / 10;
pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_STANDARD, nFontGroup );
}
if(bTitleHeightChanged)
{
float fSize = (float)aTitleHeightLB.GetValue() / 10;
pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_OUTLINE, nFontGroup );
}
if(bListHeightChanged)
{
float fSize = (float)aListHeightLB.GetValue() / 10;
pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_LIST, nFontGroup );
}
if(bLabelHeightChanged)
{
float fSize = (float)aLabelHeightLB.GetValue() / 10;
pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_CAPTION, nFontGroup );
}
if(bIndexHeightChanged)
{
float fSize = (float)aIndexHeightLB.GetValue() / 10;
pFontConfig->SetFontHeight( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), FONT_INDEX, nFontGroup );
}
}
if(pWrtShell)
{
pWrtShell->StartAllAction();
SfxPrinter* pPrinter = pWrtShell->getIDocumentDeviceAccess()->getPrinter( false );
sal_Bool bMod = sal_False;
sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONT :
FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONTSIZE :
FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE);
if(sStandard != sShellStd)
{
Font aFont( sStandard, Size( 0, 10 ) );
if( pPrinter )
aFont = pPrinter->GetFontMetric( aFont );
pWrtShell->SetDefault(SvxFontItem(aFont.GetFamily(), aFont.GetName(),
aEmptyStr, aFont.GetPitch(), aFont.GetCharSet(), nFontWhich));
SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
pColl->ResetFmtAttr(nFontWhich);
// lcl_SetColl(pWrtShell, RES_POOLCOLL_STANDARD, pPrinter, sStandard);
bMod = sal_True;
}
if(bStandardHeightChanged)
{
float fSize = (float)aStandardHeightLB.GetValue() / 10;
pWrtShell->SetDefault(SvxFontHeightItem( CalcToUnit( fSize, SFX_MAPUNIT_TWIP ), 100, nFontHeightWhich ) );
SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
pColl->ResetFmtAttr(nFontHeightWhich);
bMod = sal_True;
}
if(sTitle != sShellTitle )
{
lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE, pPrinter, sTitle, nFontWhich);
bMod = sal_True;
}
if(bTitleHeightChanged)
{
lcl_SetColl(pWrtShell, RES_POOLCOLL_HEADLINE_BASE,
sal::static_int_cast< sal_uInt16, sal_Int64 >(aTitleHeightLB.GetValue()), nFontHeightWhich);
bMod = sal_True;
}
if(sList != sShellList && (!bListDefault || !bSetListDefault ))
{
lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE, pPrinter, sList, nFontWhich);
bMod = sal_True;
}
if(bListHeightChanged)
{
lcl_SetColl(pWrtShell, RES_POOLCOLL_NUMBUL_BASE,
sal::static_int_cast< sal_uInt16, sal_Int64 >(aListHeightLB.GetValue()), nFontHeightWhich);
bMod = sal_True;
}
if(sLabel != sShellLabel && (!bLabelDefault || !bSetLabelDefault))
{
lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL, pPrinter, sLabel, nFontWhich);
bMod = sal_True;
}
if(bLabelHeightChanged)
{
lcl_SetColl(pWrtShell, RES_POOLCOLL_LABEL,
sal::static_int_cast< sal_uInt16, sal_Int64 >(aLabelHeightLB.GetValue()), nFontHeightWhich);
bMod = sal_True;
}
if(sIdx != sShellIndex && (!bIdxDefault || !bSetIdxDefault))
{
lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE, pPrinter, sIdx, nFontWhich);
bMod = sal_True;
}
if(bIndexHeightChanged)
{
lcl_SetColl(pWrtShell, RES_POOLCOLL_REGISTER_BASE,
sal::static_int_cast< sal_uInt16, sal_Int64 >(aIndexHeightLB.GetValue()), nFontHeightWhich);
bMod = sal_True;
}
if ( bMod )
pWrtShell->SetModified();
pWrtShell->EndAllAction();
}
return sal_False;
}
/*-----------------03.09.96 11.53-------------------
--------------------------------------------------*/
void SwStdFontTabPage::Reset( const SfxItemSet& rSet)
{
const SfxPoolItem* pLang;
sal_uInt16 nLangSlot = nFontGroup == FONT_GROUP_DEFAULT ? SID_ATTR_LANGUAGE :
FONT_GROUP_CJK == nFontGroup ? SID_ATTR_CHAR_CJK_LANGUAGE : SID_ATTR_CHAR_CTL_LANGUAGE;
if( SFX_ITEM_SET == rSet.GetItemState(nLangSlot, sal_False, &pLang))
eLanguage = ((const SvxLanguageItem*)pLang)->GetValue();
String sTmp(aStdChrFL.GetText());
String sToReplace = sScriptWestern;
if(FONT_GROUP_CJK == nFontGroup )
sToReplace = sScriptAsian;
else if(FONT_GROUP_CTL == nFontGroup )
sToReplace = sScriptComplex;
sTmp.SearchAndReplaceAscii("%1", sToReplace);
aStdChrFL.SetText(sTmp);
const SfxPoolItem* pItem;
if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_PRINTER, sal_False, &pItem))
{
pPrt = (SfxPrinter*)((const SwPtrItem*)pItem)->GetValue();
}
else
{
SfxItemSet* pPrinterSet = new SfxItemSet( *rSet.GetPool(),
SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
0 );
pPrt = new SfxPrinter(pPrinterSet);
bDeletePrinter = sal_True;
}
pFontList = new FontList( pPrt );
// #i94536# prevent duplication of font entries when 'reset' button is pressed
if( !aStandardBox.GetEntryCount() )
{
// get the set of disctinct available family names
std::set< String > aFontNames;
int nFontNames = pPrt->GetDevFontCount();
for( int i = 0; i < nFontNames; i++ )
{
FontInfo aInf( pPrt->GetDevFont( i ) );
aFontNames.insert( aInf.GetName() );
}
// insert to listboxes
for( std::set< String >::const_iterator it = aFontNames.begin();
it != aFontNames.end(); ++it )
{
aStandardBox.InsertEntry( *it );
aTitleBox .InsertEntry( *it );
aListBox .InsertEntry( *it );
aLabelBox .InsertEntry( *it );
aIdxBox .InsertEntry( *it );
}
}
if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_STDFONTS, sal_False, &pItem))
{
pFontConfig = (SwStdFontConfig*)((const SwPtrItem*)pItem)->GetValue();
}
if(SFX_ITEM_SET == rSet.GetItemState(FN_PARAM_WRTSHELL, sal_False, &pItem))
{
pWrtShell = (SwWrtShell*)((const SwPtrItem*)pItem)->GetValue();
}
String sStdBackup;
String sOutBackup;
String sListBackup;
String sCapBackup;
String sIdxBackup;
sal_Int32 nStandardHeight = -1;
sal_Int32 nTitleHeight = -1;
sal_Int32 nListHeight = -1;
sal_Int32 nLabelHeight = -1;
sal_Int32 nIndexHeight = -1;
if(!pWrtShell)
{
sStdBackup = pFontConfig->GetFontStandard(nFontGroup);
sOutBackup = pFontConfig->GetFontOutline(nFontGroup);
sListBackup= pFontConfig->GetFontList(nFontGroup);
sCapBackup = pFontConfig->GetFontCaption(nFontGroup);
sIdxBackup = pFontConfig->GetFontIndex(nFontGroup);
nStandardHeight = pFontConfig->GetFontHeight( FONT_STANDARD, nFontGroup, eLanguage );
nTitleHeight = pFontConfig->GetFontHeight( FONT_OUTLINE , nFontGroup, eLanguage );
nListHeight = pFontConfig->GetFontHeight( FONT_LIST , nFontGroup, eLanguage );
nLabelHeight = pFontConfig->GetFontHeight( FONT_CAPTION , nFontGroup, eLanguage );
nIndexHeight = pFontConfig->GetFontHeight( FONT_INDEX , nFontGroup, eLanguage );
if( nStandardHeight <= 0)
nStandardHeight = pFontConfig->GetDefaultHeightFor( FONT_STANDARD + nFontGroup * FONT_PER_GROUP, eLanguage);
if( nTitleHeight <= 0)
nTitleHeight = pFontConfig->GetDefaultHeightFor( FONT_OUTLINE + nFontGroup * FONT_PER_GROUP, eLanguage);
if( nListHeight <= 0)
nListHeight = pFontConfig->GetDefaultHeightFor( FONT_LIST + nFontGroup * FONT_PER_GROUP, eLanguage);
if( nLabelHeight <= 0)
nLabelHeight = pFontConfig->GetDefaultHeightFor( FONT_CAPTION + nFontGroup * FONT_PER_GROUP, eLanguage);
if( nIndexHeight <= 0)
nIndexHeight = pFontConfig->GetDefaultHeightFor( FONT_INDEX + nFontGroup * FONT_PER_GROUP, eLanguage);
aDocOnlyCB.Enable(sal_False);
}
else
{
SwTxtFmtColl *pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
const SvxFontItem& rFont = !nFontGroup ? pColl->GetFont() :
FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
sShellStd = sStdBackup = rFont.GetFamilyName();
sal_uInt16 nFontHeightWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONTSIZE :
FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONTSIZE : RES_CHRATR_CTL_FONTSIZE );
const SvxFontHeightItem& rFontHeightStandard = (const SvxFontHeightItem& )pColl->GetFmtAttr(nFontHeightWhich);
nStandardHeight = (sal_Int32)rFontHeightStandard.GetHeight();
pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_HEADLINE_BASE);
const SvxFontItem& rFontHL = !nFontGroup ? pColl->GetFont() :
FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
sShellTitle = sOutBackup = rFontHL.GetFamilyName();
const SvxFontHeightItem& rFontHeightTitle = (const SvxFontHeightItem&)pColl->GetFmtAttr( nFontHeightWhich, sal_True );
nTitleHeight = (sal_Int32)rFontHeightTitle.GetHeight();
sal_uInt16 nFontWhich = sal::static_int_cast< sal_uInt16, RES_CHRATR >(
nFontGroup == FONT_GROUP_DEFAULT ? RES_CHRATR_FONT :
FONT_GROUP_CJK == nFontGroup ? RES_CHRATR_CJK_FONT : RES_CHRATR_CTL_FONT);
pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_NUMBUL_BASE);
const SvxFontItem& rFontLS = !nFontGroup ? pColl->GetFont() :
FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
bListDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
sShellList = sListBackup = rFontLS.GetFamilyName();
const SvxFontHeightItem& rFontHeightList = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
nListHeight = (sal_Int32)rFontHeightList.GetHeight();
bListHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_LABEL);
bLabelDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
const SvxFontItem& rFontCP = !nFontGroup ? pColl->GetFont() :
FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
sShellLabel = sCapBackup = rFontCP.GetFamilyName();
const SvxFontHeightItem& rFontHeightLabel = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
nLabelHeight = (sal_Int32)rFontHeightLabel.GetHeight();
bLabelHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
pColl = pWrtShell->GetTxtCollFromPool(RES_POOLCOLL_REGISTER_BASE);
bIdxDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
const SvxFontItem& rFontIDX = !nFontGroup ? pColl->GetFont() :
FONT_GROUP_CJK == nFontGroup ? pColl->GetCJKFont() : pColl->GetCTLFont();
sShellIndex = sIdxBackup = rFontIDX.GetFamilyName();
const SvxFontHeightItem& rFontHeightIndex = (const SvxFontHeightItem&)pColl->GetFmtAttr(nFontHeightWhich, sal_True);
nIndexHeight = (sal_Int32)rFontHeightIndex.GetHeight();
bIndexHeightDefault = SFX_ITEM_DEFAULT == pColl->GetAttrSet().GetItemState(nFontWhich, sal_False);
}
aStandardBox.SetText(sStdBackup );
aTitleBox .SetText(sOutBackup );
aListBox .SetText(sListBackup);
aLabelBox .SetText(sCapBackup );
aIdxBox .SetText(sIdxBackup );
FontInfo aFontInfo( pFontList->Get(sStdBackup, sStdBackup) );
aStandardHeightLB.Fill( &aFontInfo, pFontList );
aFontInfo = pFontList->Get(sOutBackup, sOutBackup );
aTitleHeightLB.Fill( &aFontInfo, pFontList );
aFontInfo = pFontList->Get(sListBackup,sListBackup);
aListHeightLB.Fill( &aFontInfo, pFontList );
aFontInfo = pFontList->Get(sCapBackup, sCapBackup );
aLabelHeightLB.Fill( &aFontInfo, pFontList );
aFontInfo = pFontList->Get(sIdxBackup, sIdxBackup );
aIndexHeightLB.Fill( &aFontInfo, pFontList );
aStandardHeightLB.SetValue( CalcToPoint( nStandardHeight, SFX_MAPUNIT_TWIP, 10 ) );
aTitleHeightLB. SetValue( CalcToPoint( nTitleHeight , SFX_MAPUNIT_TWIP, 10 ) );
aListHeightLB. SetValue( CalcToPoint( nListHeight , SFX_MAPUNIT_TWIP, 10 ) );
aLabelHeightLB. SetValue( CalcToPoint( nLabelHeight , SFX_MAPUNIT_TWIP, 10 ));
aIndexHeightLB. SetValue( CalcToPoint( nIndexHeight , SFX_MAPUNIT_TWIP, 10 ));
aStandardBox.SaveValue();
aTitleBox .SaveValue();
aListBox .SaveValue();
aLabelBox .SaveValue();
aIdxBox .SaveValue();
aStandardHeightLB.SaveValue();
aTitleHeightLB. SaveValue();
aListHeightLB. SaveValue();
aLabelHeightLB. SaveValue();
aIndexHeightLB. SaveValue();
}
/*-----------------07.09.96 12.28-------------------
--------------------------------------------------*/
IMPL_LINK( SwStdFontTabPage, StandardHdl, PushButton *, EMPTYARG )
{
sal_uInt8 nFontOffset = nFontGroup * FONT_PER_GROUP;
aStandardBox.SetText(SwStdFontConfig::GetDefaultFor(FONT_STANDARD + nFontOffset, eLanguage));
aTitleBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_OUTLINE + nFontOffset, eLanguage));
aListBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_LIST + nFontOffset, eLanguage));
aLabelBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_CAPTION + nFontOffset, eLanguage));
aIdxBox .SetText(SwStdFontConfig::GetDefaultFor(FONT_INDEX + nFontOffset, eLanguage));
aStandardBox.SaveValue();
aTitleBox .SaveValue();
aListBox .SaveValue();
aLabelBox .SaveValue();
aIdxBox .SaveValue();
aStandardHeightLB.SetValue( CalcToPoint(
SwStdFontConfig::GetDefaultHeightFor(FONT_STANDARD + nFontOffset, eLanguage),
SFX_MAPUNIT_TWIP, 10 ) );
aTitleHeightLB .SetValue(CalcToPoint(
SwStdFontConfig::GetDefaultHeightFor(FONT_OUTLINE +
nFontOffset, eLanguage), SFX_MAPUNIT_TWIP, 10 ));
aListHeightLB .SetValue(CalcToPoint(
SwStdFontConfig::GetDefaultHeightFor(FONT_LIST + nFontOffset, eLanguage),
SFX_MAPUNIT_TWIP, 10 ));
aLabelHeightLB .SetValue(CalcToPoint(
SwStdFontConfig::GetDefaultHeightFor(FONT_CAPTION + nFontOffset, eLanguage),
SFX_MAPUNIT_TWIP, 10 ));
aIndexHeightLB .SetValue(CalcToPoint(
SwStdFontConfig::GetDefaultHeightFor(FONT_INDEX + nFontOffset, eLanguage),
SFX_MAPUNIT_TWIP, 10 ));
return 0;
}
/*-----------------17.01.97 15.43-------------------
--------------------------------------------------*/
IMPL_LINK( SwStdFontTabPage, ModifyHdl, ComboBox*, pBox )
{
if(pBox == &aStandardBox)
{
String sEntry = pBox->GetText();
if(bSetListDefault && bListDefault)
aListBox.SetText(sEntry);
if(bSetLabelDefault && bLabelDefault)
aLabelBox.SetText(sEntry);
if(bSetIdxDefault && bIdxDefault)
aIdxBox.SetText(sEntry);
}
else if(pBox == &aListBox)
{
bSetListDefault = sal_False;
}
else if(pBox == &aLabelBox)
{
bSetLabelDefault = sal_False;
}
else if(pBox == &aIdxBox)
{
bSetIdxDefault = sal_False;
}
return 0;
}
/*-- 11.10.2005 15:11:23---------------------------------------------------
-----------------------------------------------------------------------*/
IMPL_LINK( SwStdFontTabPage, ModifyHeightHdl, FontSizeBox*, pBox )
{
if(pBox == &aStandardHeightLB)
{
sal_Int64 nValue = pBox->GetValue(FUNIT_TWIP);
if(bSetListHeightDefault && bListHeightDefault)
aListHeightLB.SetValue(nValue, FUNIT_TWIP);
if(bSetLabelHeightDefault && bLabelHeightDefault)
aLabelHeightLB.SetValue(nValue, FUNIT_TWIP);
if(bSetIndexHeightDefault && bIndexHeightDefault)
aIndexHeightLB.SetValue(nValue, FUNIT_TWIP);
}
else if(pBox == &aListHeightLB)
{
bSetListHeightDefault = sal_False;
}
else if(pBox == &aLabelHeightLB)
{
bSetLabelHeightDefault = sal_False;
}
else if(pBox == &aIndexHeightLB)
{
bSetIndexHeightDefault = sal_False;
}
return 0;
}
/*-- 28.09.2005 13:22:36---------------------------------------------------
-----------------------------------------------------------------------*/
IMPL_LINK( SwStdFontTabPage, LoseFocusHdl, ComboBox*, pBox )
{
FontSizeBox* pHeightLB = 0;
String sEntry = pBox->GetText();
if(pBox == &aStandardBox)
{
pHeightLB = &aStandardHeightLB;
}
else if(pBox == &aTitleBox)
{
pHeightLB = &aTitleHeightLB;
}
else if(pBox == &aListBox)
{
pHeightLB = &aListHeightLB;
}
else if(pBox == &aLabelBox)
{
pHeightLB = &aLabelHeightLB;
}
else /*if(pBox == &aIdxBox)*/
{
pHeightLB = &aIndexHeightLB;
}
FontInfo aFontInfo( pFontList->Get(sEntry, sEntry) );
pHeightLB->Fill( &aFontInfo, pFontList );
return 0;
}
void SwStdFontTabPage::PageCreated (SfxAllItemSet aSet)
{
SFX_ITEMSET_ARG (&aSet,pFlagItem,SfxUInt16Item, SID_FONTMODE_TYPE, sal_False);
if (pFlagItem)
SetFontMode(sal::static_int_cast< sal_uInt8, sal_uInt16>( pFlagItem->GetValue()));
}
/*-----------------18.01.97 12.14-------------------
Optionen Tabelle
--------------------------------------------------*/
SwTableOptionsTabPage::SwTableOptionsTabPage( Window* pParent, const SfxItemSet& rSet ) :
SfxTabPage(pParent, SW_RES(TP_OPTTABLE_PAGE), rSet),
aTableFL (this, SW_RES(FL_TABLE )),
aHeaderCB (this, SW_RES(CB_HEADER )),
aRepeatHeaderCB (this, SW_RES(CB_REPEAT_HEADER )),
aDontSplitCB (this, SW_RES(CB_DONT_SPLIT )),
aBorderCB (this, SW_RES(CB_BORDER )),
aSeparatorFL (this, SW_RES(FL_TABLE_SEPARATOR)),
aTableInsertFL (this, SW_RES(FL_TABLE_INSERT )),
aNumFormattingCB(this, SW_RES(CB_NUMFORMATTING )),
aNumFmtFormattingCB(this, SW_RES(CB_NUMFMT_FORMATTING )),
aNumAlignmentCB (this, SW_RES(CB_NUMALIGNMENT )),
aMoveFL( this, SW_RES(FL_MOVE )),
aMoveFT( this, SW_RES(FT_MOVE )),
aRowMoveFT( this, SW_RES(FT_ROWMOVE )),
aRowMoveMF( this, SW_RES(MF_ROWMOVE )),
aColMoveFT( this, SW_RES(FT_COLMOVE )),
aColMoveMF( this, SW_RES(MF_COLMOVE )),
aInsertFT( this, SW_RES(FT_INSERT )),
aRowInsertFT( this, SW_RES(FT_ROWINSERT)),
aRowInsertMF( this, SW_RES(MF_ROWINSERT)),
aColInsertFT( this, SW_RES(FT_COLINSERT)),
aColInsertMF( this, SW_RES(MF_COLINSERT)),
aHandlingFT( this, SW_RES(FT_HANDLING )),
aFixRB( this, SW_RES(RB_FIX )),
aFixPropRB( this, SW_RES(RB_FIXPROP )),
aVarRB( this, SW_RES(RB_VAR )),
aFixFT( this, SW_RES(FT_FIX )),
aFixPropFT( this, SW_RES(FT_FIXPROP )),
aVarFT( this, SW_RES(FT_VAR )),
pWrtShell(0),
bHTMLMode(sal_False)
{
FreeResource();
Link aLnk(LINK(this, SwTableOptionsTabPage, CheckBoxHdl));
aNumFormattingCB.SetClickHdl(aLnk);
aNumFmtFormattingCB.SetClickHdl(aLnk);
aHeaderCB.SetClickHdl(aLnk);
}
/*-----------------18.01.97 12.43-------------------
--------------------------------------------------*/
SwTableOptionsTabPage::~SwTableOptionsTabPage()
{
}
/*-----------------18.01.97 12.43-------------------
--------------------------------------------------*/
SfxTabPage* SwTableOptionsTabPage::Create( Window* pParent,
const SfxItemSet& rAttrSet )
{
return new SwTableOptionsTabPage(pParent, rAttrSet );
}
/*-----------------18.01.97 12.42-------------------
--------------------------------------------------*/
sal_Bool SwTableOptionsTabPage::FillItemSet( SfxItemSet& )
{
sal_Bool bRet = sal_False;
SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
if(aRowMoveMF.IsModified())
pModOpt->SetTblHMove( (sal_uInt16)aRowMoveMF.Denormalize( aRowMoveMF.GetValue(FUNIT_TWIP)));
if(aColMoveMF.IsModified())
pModOpt->SetTblVMove( (sal_uInt16)aColMoveMF.Denormalize( aColMoveMF.GetValue(FUNIT_TWIP)));
if(aRowInsertMF.IsModified())
pModOpt->SetTblHInsert((sal_uInt16)aRowInsertMF.Denormalize( aRowInsertMF.GetValue(FUNIT_TWIP)));
if(aColInsertMF.IsModified())
pModOpt->SetTblVInsert((sal_uInt16)aColInsertMF.Denormalize( aColInsertMF.GetValue(FUNIT_TWIP)));
TblChgMode eMode;
if(aFixRB.IsChecked())
eMode = TBLFIX_CHGABS;
else if(aFixPropRB.IsChecked())
eMode = TBLFIX_CHGPROP;
else
eMode = TBLVAR_CHGABS;
if(eMode != pModOpt->GetTblMode())
{
pModOpt->SetTblMode(eMode);
// der Tabellen-Tastatur-Modus hat sich geaendert, das soll
// jetzt auch die aktuelle Tabelle erfahren
if(pWrtShell && nsSelectionType::SEL_TBL & pWrtShell->GetSelectionType())
{
pWrtShell->SetTblChgMode(eMode);
static sal_uInt16 __READONLY_DATA aInva[] =
{ FN_TABLE_MODE_FIX,
FN_TABLE_MODE_FIX_PROP,
FN_TABLE_MODE_VARIABLE,
0
};
pWrtShell->GetView().GetViewFrame()->GetBindings().Invalidate( aInva );
}
bRet = sal_True;
}
SwInsertTableOptions aInsOpts( 0, 0 );
if (aHeaderCB.IsChecked())
aInsOpts.mnInsMode |= tabopts::HEADLINE;
if (aRepeatHeaderCB.IsEnabled() )
aInsOpts.mnRowsToRepeat = aRepeatHeaderCB.IsChecked()? 1 : 0;
if (!aDontSplitCB.IsChecked())
aInsOpts.mnInsMode |= tabopts::SPLIT_LAYOUT;
if (aBorderCB.IsChecked())
aInsOpts.mnInsMode |= tabopts::DEFAULT_BORDER;
if (aHeaderCB.GetSavedValue() != aHeaderCB.GetState() ||
aRepeatHeaderCB.GetSavedValue() != aRepeatHeaderCB.GetState() ||
aDontSplitCB.GetSavedValue() != aDontSplitCB.GetState() ||
aBorderCB.GetSavedValue() != aBorderCB.GetState())
{
pModOpt->SetInsTblFlags(bHTMLMode, aInsOpts);
}
if (aNumFormattingCB.GetSavedValue() != aNumFormattingCB.GetState())
{
pModOpt->SetInsTblFormatNum(bHTMLMode, aNumFormattingCB.IsChecked());
bRet = sal_True;
}
if (aNumFmtFormattingCB.GetSavedValue() != aNumFmtFormattingCB.GetState())
{
pModOpt->SetInsTblChangeNumFormat(bHTMLMode, aNumFmtFormattingCB.IsChecked());
bRet = sal_True;
}
if (aNumAlignmentCB.GetSavedValue() != aNumAlignmentCB.GetState())
{
pModOpt->SetInsTblAlignNum(bHTMLMode, aNumAlignmentCB.IsChecked());
bRet = sal_True;
}
return bRet;
}
/*-----------------18.01.97 12.42-------------------
--------------------------------------------------*/
void SwTableOptionsTabPage::Reset( const SfxItemSet& rSet)
{
const SwModuleOptions* pModOpt = SW_MOD()->GetModuleConfig();
if ( rSet.GetItemState( SID_ATTR_METRIC ) >= SFX_ITEM_AVAILABLE )
{
const SfxUInt16Item& rItem = (SfxUInt16Item&)rSet.Get( SID_ATTR_METRIC );
FieldUnit eFieldUnit = (FieldUnit)rItem.GetValue();
::SetFieldUnit( aRowMoveMF, eFieldUnit );
::SetFieldUnit( aColMoveMF, eFieldUnit );
::SetFieldUnit( aRowInsertMF, eFieldUnit );
::SetFieldUnit( aColInsertMF, eFieldUnit );
}
aRowMoveMF .SetValue(aRowMoveMF.Normalize(pModOpt->GetTblHMove()), FUNIT_TWIP);
aColMoveMF .SetValue(aColMoveMF.Normalize(pModOpt->GetTblVMove()), FUNIT_TWIP);
aRowInsertMF.SetValue(aRowInsertMF.Normalize(pModOpt->GetTblHInsert()), FUNIT_TWIP);
aColInsertMF.SetValue(aColInsertMF.Normalize(pModOpt->GetTblVInsert()), FUNIT_TWIP);
switch(pModOpt->GetTblMode())
{
case TBLFIX_CHGABS: aFixRB.Check(); break;
case TBLFIX_CHGPROP: aFixPropRB.Check(); break;
case TBLVAR_CHGABS: aVarRB.Check(); break;
}
const SfxPoolItem* pItem;
if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem))
{
bHTMLMode = 0 != (((const SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON);
}
//bestimmte Controls fuer HTML verstecken
if(bHTMLMode)
{
/* Point aPos(aCaptionFL.GetPosPixel());
long nYDiff = aTableFL.GetPosPixel().Y() - aPos.Y();
aTableFL.SetPosPixel(aPos);
aPos = aHeaderCB.GetPosPixel();
aPos.Y() -= nYDiff;
aHeaderCB.SetPosPixel(aPos);
aPos = aRepeatHeaderCB.GetPosPixel();
aPos.Y() -= nYDiff;
aRepeatHeaderCB.SetPosPixel(aPos);
aPos = aDontSplitCB.GetPosPixel(); // hier muss eine Luecke geschlossen werden
aPos.Y() -= nYDiff;
aBorderCB.SetPosPixel(aPos);
aPos = aTableInsertFL.GetPosPixel();
aPos.Y() -= nYDiff;
aTableInsertFL.SetPosPixel(aPos);
aPos = aNumFormattingCB.GetPosPixel();
aPos.Y() -= nYDiff;
aNumFormattingCB.SetPosPixel(aPos);
aPos = aNumFmtFormattingCB.GetPosPixel();
aPos.Y() -= nYDiff;
aNumFmtFormattingCB.SetPosPixel(aPos);
aPos = aNumAlignmentCB.GetPosPixel();
aPos.Y() -= nYDiff;
aNumAlignmentCB.SetPosPixel(aPos);
aCaptionFL.Hide();
aCaptionCB.Hide();
aCaptionFT.Hide();
aCaptionPB.Hide();
*/
aDontSplitCB.Hide();
}
SwInsertTableOptions aInsOpts = pModOpt->GetInsTblFlags(bHTMLMode);
sal_uInt16 nInsTblFlags = aInsOpts.mnInsMode;
aHeaderCB.Check(0 != (nInsTblFlags & tabopts::HEADLINE));
aRepeatHeaderCB.Check(aInsOpts.mnRowsToRepeat > 0);
aDontSplitCB.Check(!(nInsTblFlags & tabopts::SPLIT_LAYOUT));
aBorderCB.Check(0 != (nInsTblFlags & tabopts::DEFAULT_BORDER));
aNumFormattingCB.Check(pModOpt->IsInsTblFormatNum(bHTMLMode));
aNumFmtFormattingCB.Check(pModOpt->IsInsTblChangeNumFormat(bHTMLMode));
aNumAlignmentCB.Check(pModOpt->IsInsTblAlignNum(bHTMLMode));
aHeaderCB.SaveValue();
aRepeatHeaderCB.SaveValue();
aDontSplitCB.SaveValue();
aBorderCB.SaveValue();
aNumFormattingCB.SaveValue();
aNumFmtFormattingCB.SaveValue();
aNumAlignmentCB.SaveValue();
CheckBoxHdl(0);
}
/*-----------------18.01.97 12.42-------------------
--------------------------------------------------*/
IMPL_LINK(SwTableOptionsTabPage, CheckBoxHdl, CheckBox*, EMPTYARG)
{
aNumFmtFormattingCB.Enable(aNumFormattingCB.IsChecked());
aNumAlignmentCB.Enable(aNumFormattingCB.IsChecked());
aRepeatHeaderCB.Enable(aHeaderCB.IsChecked());
return 0;
}
void SwTableOptionsTabPage::PageCreated (SfxAllItemSet aSet)
{
SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,sal_False);
if (pWrtSh)
SetWrtShell(pWrtSh->GetValue());
}
/* */
/*-----------------31.10.97 17:55-------------------
TabPage fuer ShadowCrsr
--------------------------------------------------*/
SwShdwCrsrOptionsTabPage::SwShdwCrsrOptionsTabPage( Window* pParent,
const SfxItemSet& rSet )
: SfxTabPage(pParent, SW_RES(TP_OPTSHDWCRSR), rSet),
aUnprintFL ( this, SW_RES( FL_NOPRINT ) ),
aParaCB ( this, SW_RES( CB_PARA ) ),
aSHyphCB ( this, SW_RES( CB_SHYPH ) ),
aSpacesCB ( this, SW_RES( CB_SPACE ) ),
aHSpacesCB ( this, SW_RES( CB_HSPACE ) ),
aTabCB ( this, SW_RES( CB_TAB ) ),
aBreakCB ( this, SW_RES( CB_BREAK ) ),
aCharHiddenCB ( this, SW_RES( CB_CHAR_HIDDEN ) ),
aFldHiddenCB ( this, SW_RES( CB_FLD_HIDDEN ) ),
aFldHiddenParaCB ( this, SW_RES( CB_FLD_HIDDEN_PARA ) ),
aSeparatorFL( this, SW_RES( FL_SEPARATOR_SHDW)),
aFlagFL( this, SW_RES( FL_SHDWCRSFLAG )),
aOnOffCB( this, SW_RES( CB_SHDWCRSONOFF )),
aFillModeFT( this, SW_RES( FT_SHDWCRSFILLMODE )),
aFillMarginRB( this, SW_RES( RB_SHDWCRSFILLMARGIN )),
aFillIndentRB( this, SW_RES( RB_SHDWCRSFILLINDENT )),
aFillTabRB( this, SW_RES( RB_SHDWCRSFILLTAB )),
aFillSpaceRB( this, SW_RES( RB_SHDWCRSFILLSPACE )),
aCrsrOptFL ( this, SW_RES( FL_CRSR_OPT)),
aCrsrInProtCB( this, SW_RES( CB_ALLOW_IN_PROT )),
m_aLayoutOptionsFL( this, SW_RES( FL_LAYOUT_OPTIONS ) ),
m_aMathBaselineAlignmentCB( this, SW_RES( CB_MATH_BASELINE_ALIGNMENT ) ),
m_pWrtShell( NULL )
{
FreeResource();
const SfxPoolItem* pItem = 0;
SwShadowCursorItem aOpt;
if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem ))
aOpt = *(SwShadowCursorItem*)pItem;
aOnOffCB.Check( aOpt.IsOn() );
sal_uInt8 eMode = aOpt.GetMode();
aFillIndentRB.Check( FILL_INDENT == eMode );
aFillMarginRB.Check( FILL_MARGIN == eMode );
aFillTabRB.Check( FILL_TAB == eMode );
aFillSpaceRB.Check( FILL_SPACE == eMode );
if(SFX_ITEM_SET == rSet.GetItemState(SID_HTML_MODE, sal_False, &pItem )
&& ((SfxUInt16Item*)pItem)->GetValue() & HTMLMODE_ON)
{
aTabCB .Hide();
aCharHiddenCB.Hide();
aFldHiddenCB .Hide();
aFldHiddenParaCB.Hide();
aBreakCB.SetPosPixel(aTabCB.GetPosPixel());
aFlagFL .Hide();
aOnOffCB .Hide();
aFillModeFT .Hide();
aFillMarginRB .Hide();
aFillIndentRB .Hide();
aFillTabRB .Hide();
aFillSpaceRB .Hide();
aCrsrOptFL .Hide();
aCrsrInProtCB .Hide();
aSeparatorFL.Hide();
long nWidth = aFlagFL.GetSizePixel().Width() + aFlagFL.GetPosPixel().X()
- aUnprintFL.GetPosPixel().X();
Size aSize(aUnprintFL.GetSizePixel());
aSize.Width() = nWidth;
aUnprintFL.SetSizePixel(aSize);
}
}
SwShdwCrsrOptionsTabPage::~SwShdwCrsrOptionsTabPage()
{
}
SfxTabPage* SwShdwCrsrOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet )
{
return new SwShdwCrsrOptionsTabPage( pParent, rSet );
}
void SwShdwCrsrOptionsTabPage::PageCreated( SfxAllItemSet aSet )
{
SFX_ITEMSET_ARG (&aSet,pWrtSh,SwWrtShellItem,SID_WRT_SHELL,sal_False);
if (pWrtSh)
SetWrtShell(pWrtSh->GetValue());
}
sal_Bool SwShdwCrsrOptionsTabPage::FillItemSet( SfxItemSet& rSet )
{
SwShadowCursorItem aOpt;
aOpt.SetOn( aOnOffCB.IsChecked() );
sal_uInt8 eMode;
if( aFillIndentRB.IsChecked() )
eMode= FILL_INDENT;
else if( aFillMarginRB.IsChecked() )
eMode = FILL_MARGIN;
else if( aFillTabRB.IsChecked() )
eMode = FILL_TAB;
else
eMode = FILL_SPACE;
aOpt.SetMode( eMode );
sal_Bool bRet = sal_False;
const SfxPoolItem* pItem = 0;
if( SFX_ITEM_SET != rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem )
|| ((SwShadowCursorItem&)*pItem) != aOpt )
{
rSet.Put( aOpt );
bRet = sal_True;
}
if ( m_pWrtShell )
{
m_pWrtShell->GetDoc()->set(
IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT,
m_aMathBaselineAlignmentCB.IsChecked() );
bRet |= m_aMathBaselineAlignmentCB.IsChecked() != m_aMathBaselineAlignmentCB.GetSavedValue();
}
if( aCrsrInProtCB.IsChecked() != aCrsrInProtCB.GetSavedValue())
{
rSet.Put(SfxBoolItem(FN_PARAM_CRSR_IN_PROTECTED, aCrsrInProtCB.IsChecked()));
bRet |= sal_True;
}
const SwDocDisplayItem* pOldAttr =
(const SwDocDisplayItem*)GetOldItem(GetItemSet(), FN_PARAM_DOCDISP);
SwDocDisplayItem aDisp;
if(pOldAttr)
aDisp = *pOldAttr;
//
aDisp.bParagraphEnd = aParaCB .IsChecked();
aDisp.bTab = aTabCB .IsChecked();
aDisp.bSpace = aSpacesCB .IsChecked();
aDisp.bNonbreakingSpace = aHSpacesCB .IsChecked();
aDisp.bSoftHyphen = aSHyphCB .IsChecked();
aDisp.bFldHiddenText = aFldHiddenCB .IsChecked();
aDisp.bCharHiddenText = aCharHiddenCB.IsChecked();
aDisp.bShowHiddenPara = aFldHiddenParaCB .IsChecked();
aDisp.bManualBreak = aBreakCB .IsChecked();
bRet |= (!pOldAttr || aDisp != *pOldAttr);
if(bRet)
bRet = 0 != rSet.Put(aDisp);
return bRet;
}
void SwShdwCrsrOptionsTabPage::Reset( const SfxItemSet& rSet )
{
const SfxPoolItem* pItem = 0;
SwShadowCursorItem aOpt;
if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SHADOWCURSOR, sal_False, &pItem ))
{
aOpt = *(SwShadowCursorItem*)pItem;
}
aOnOffCB.Check( aOpt.IsOn() );
sal_uInt8 eMode = aOpt.GetMode();
aFillIndentRB.Check( FILL_INDENT == eMode );
aFillMarginRB.Check( FILL_MARGIN == eMode );
aFillTabRB.Check( FILL_TAB == eMode );
aFillSpaceRB.Check( FILL_SPACE == eMode );
if ( m_pWrtShell )
{
m_aMathBaselineAlignmentCB.Check( m_pWrtShell->GetDoc()->get( IDocumentSettingAccess::MATH_BASELINE_ALIGNMENT ) );
m_aMathBaselineAlignmentCB.SaveValue();
}
else
{
m_aMathBaselineAlignmentCB.Disable();
}
if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_CRSR_IN_PROTECTED, sal_False, &pItem ))
{
aCrsrInProtCB.Check(((const SfxBoolItem*)pItem)->GetValue());
}
aCrsrInProtCB.SaveValue();
const SwDocDisplayItem* pDocDisplayAttr = 0;
rSet.GetItemState( FN_PARAM_DOCDISP, sal_False, (const SfxPoolItem**)&pDocDisplayAttr );
if(pDocDisplayAttr)
{
aParaCB .Check (pDocDisplayAttr->bParagraphEnd );
aTabCB .Check (pDocDisplayAttr->bTab );
aSpacesCB .Check (pDocDisplayAttr->bSpace );
aHSpacesCB .Check (pDocDisplayAttr->bNonbreakingSpace );
aSHyphCB .Check (pDocDisplayAttr->bSoftHyphen );
aCharHiddenCB.Check (pDocDisplayAttr->bCharHiddenText );
aFldHiddenCB .Check (pDocDisplayAttr->bFldHiddenText );
aFldHiddenParaCB.Check (pDocDisplayAttr->bShowHiddenPara );
aBreakCB .Check (pDocDisplayAttr->bManualBreak );
}
}
/*-----------------31.10.97 17:55-------------------
TabPage fuer Redlining
--------------------------------------------------*/
struct CharAttr
{
sal_uInt16 nItemId;
sal_uInt16 nAttr;
};
// Editieren entspricht Einfuegen-Attributen
static CharAttr __FAR_DATA aRedlineAttr[] =
{
{ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_NOT_MAPPED },
{ SID_ATTR_CHAR_WEIGHT, WEIGHT_BOLD },
{ SID_ATTR_CHAR_POSTURE, ITALIC_NORMAL },
{ SID_ATTR_CHAR_UNDERLINE, UNDERLINE_SINGLE },
{ SID_ATTR_CHAR_UNDERLINE, UNDERLINE_DOUBLE },
{ SID_ATTR_CHAR_STRIKEOUT, STRIKEOUT_SINGLE },
{ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_VERSALIEN },
{ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_GEMEINE },
{ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_KAPITAELCHEN },
{ SID_ATTR_CHAR_CASEMAP, SVX_CASEMAP_TITEL },
{ SID_ATTR_BRUSH, 0 }
};
// Items from aRedlineAttr relevant for InsertAttr: strikethrough is
// not used
static sal_uInt16 aInsertAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
// Items from aRedlineAttr relevant for DeleteAttr: underline and
// double underline is not used
static sal_uInt16 aDeletedAttrMap[] = { 0, 1, 2, 5, 6, 7, 8, 9, 10 };
// Items from aRedlineAttr relevant for ChangeAttr: strikethrough is
// not used
static sal_uInt16 aChangedAttrMap[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 10 };
/*-----------------------------------------------------------------------
Beschreibung: Markierungsvorschau
-----------------------------------------------------------------------*/
SwMarkPreview::SwMarkPreview( Window *pParent, const ResId& rResID ) :
Window(pParent, rResID),
m_aTransCol( COL_TRANSPARENT ),
m_aMarkCol( COL_LIGHTRED ),
nMarkPos(0)
{
InitColors();
SetMapMode(MAP_PIXEL);
const Size aSz(GetOutputSizePixel());
// Seite
aPage.SetSize(Size(aSz.Width() - 3, aSz.Height() - 3));
sal_uLong nOutWPix = aPage.GetWidth();
sal_uLong nOutHPix = aPage.GetHeight();
// PrintArea
sal_uLong nLBorder = 8;
sal_uLong nRBorder = 8;
sal_uLong nTBorder = 4;
sal_uLong nBBorder = 4;
aLeftPagePrtArea = Rectangle(Point(nLBorder, nTBorder), Point((nOutWPix - 1) - nRBorder, (nOutHPix - 1) - nBBorder));
sal_uInt16 nWidth = (sal_uInt16)aLeftPagePrtArea.GetWidth();
sal_uInt16 nKorr = (nWidth & 1) != 0 ? 0 : 1;
aLeftPagePrtArea.SetSize(Size(nWidth / 2 - (nLBorder + nRBorder) / 2 + nKorr, aLeftPagePrtArea.GetHeight()));
aRightPagePrtArea = aLeftPagePrtArea;
aRightPagePrtArea.Move(aLeftPagePrtArea.GetWidth() + nLBorder + nRBorder + 1, 0);
}
SwMarkPreview::~SwMarkPreview()
{
}
void SwMarkPreview::InitColors( void )
{
// m_aTransCol and m_aMarkCol are _not_ changed because they are set from outside!
const StyleSettings& rSettings = GetSettings().GetStyleSettings();
m_aBgCol = Color( rSettings.GetWindowColor() );
sal_Bool bHC = rSettings.GetHighContrastMode();
m_aLineCol = bHC? SwViewOption::GetFontColor() : Color( COL_BLACK );
m_aShadowCol = bHC? m_aBgCol : rSettings.GetShadowColor();
m_aTxtCol = bHC? SwViewOption::GetFontColor() : Color( COL_GRAY );
m_aPrintAreaCol = m_aTxtCol;
}
void SwMarkPreview::DataChanged( const DataChangedEvent& rDCEvt )
{
Window::DataChanged( rDCEvt );
if( rDCEvt.GetType() == DATACHANGED_SETTINGS && ( rDCEvt.GetFlags() & SETTINGS_STYLE ) )
InitColors();
}
void SwMarkPreview::Paint(const Rectangle &/*rRect*/)
{
// Schatten zeichnen
Rectangle aShadow(aPage);
aShadow += Point(3, 3);
DrawRect( aShadow, m_aShadowCol, m_aTransCol );
// Seite zeichnen
DrawRect( aPage, m_aBgCol, m_aLineCol );
// Separator zeichnen
Rectangle aPageSeparator(aPage);
aPageSeparator.SetSize(Size(2, aPageSeparator.GetHeight()));
aPageSeparator.Move(aPage.GetWidth() / 2 - 1, 0);
DrawRect( aPageSeparator, m_aLineCol, m_aTransCol );
PaintPage(aLeftPagePrtArea);
PaintPage(aRightPagePrtArea);
Rectangle aLeftMark(Point(aPage.Left() + 2, aLeftPagePrtArea.Top() + 4), Size(aLeftPagePrtArea.Left() - 4, 2));
Rectangle aRightMark(Point(aRightPagePrtArea.Right() + 2, aRightPagePrtArea.Bottom() - 6), Size(aLeftPagePrtArea.Left() - 4, 2));
switch (nMarkPos)
{
case 1: // Links
aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
break;
case 2: // Rechts
aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
break;
case 3: // Aussen
break;
case 4: // Innen
aLeftMark.SetPos(Point(aLeftPagePrtArea.Right() + 2, aLeftMark.Top()));
aRightMark.SetPos(Point(aRightPagePrtArea.Left() - 2 - aRightMark.GetWidth(), aRightMark.Top()));
break;
case 0: // Keine
default:
return;
}
DrawRect( aLeftMark, m_aMarkCol, m_aTransCol );
DrawRect( aRightMark, m_aMarkCol, m_aTransCol );
}
void SwMarkPreview::PaintPage(const Rectangle &rRect)
{
// PrintArea zeichnen
DrawRect(rRect, m_aTransCol, m_aPrintAreaCol );
// Testabsatz zeichnen
sal_uLong nLTxtBorder = 4;
sal_uLong nRTxtBorder = 4;
sal_uLong nTTxtBorder = 4;
Rectangle aTextLine = rRect;
aTextLine.SetSize(Size(aTextLine.GetWidth(), 2));
aTextLine.Left() += nLTxtBorder;
aTextLine.Right() -= nRTxtBorder;
aTextLine.Move(0, nTTxtBorder);
sal_Int32 nStep;
sal_uInt16 nLines;
nStep = aTextLine.GetHeight() + 2;
nLines = (sal_uInt16)(rRect.GetHeight() / (aTextLine.GetHeight() + 2)) - 1;
// Text simulieren
//
for (sal_uInt16 i = 0; i < nLines; ++i)
{
if (i == (nLines - 1))
aTextLine.SetSize(Size(aTextLine.GetWidth() / 2, aTextLine.GetHeight()));
if (aPage.IsInside(aTextLine))
DrawRect(aTextLine, m_aTxtCol, m_aTransCol );
aTextLine.Move(0, nStep);
}
aTextLine.Move(0, -nStep);
}
void SwMarkPreview::DrawRect(const Rectangle &rRect, const Color &rFillColor, const Color &rLineColor)
{
SetFillColor(rFillColor);
SetLineColor(rLineColor);
Window::DrawRect(rRect);
}
namespace
{
void lcl_FillRedlineAttrListBox(
ListBox& rLB, const AuthorCharAttr& rAttrToSelect,
const sal_uInt16* pAttrMap, const sal_uInt16 nAttrMapSize)
{
for (sal_uInt16 i = 0; i != nAttrMapSize; ++i)
{
CharAttr& rAttr(aRedlineAttr[pAttrMap[i]]);
rLB.SetEntryData(i, &rAttr);
if (rAttr.nItemId == rAttrToSelect.nItemId &&
rAttr.nAttr == rAttrToSelect.nAttr)
rLB.SelectEntryPos(i);
}
}
}
SwRedlineOptionsTabPage::SwRedlineOptionsTabPage( Window* pParent,
const SfxItemSet& rSet )
: SfxTabPage(pParent, SW_RES(TP_REDLINE_OPT), rSet),
aInsertFL( this, SW_RES( FL_TE )),
aInsertFT( this, SW_RES( FT_CHG_INSERT )),
aInsertAttrFT( this, SW_RES( FT_INS_ATTR )),
aInsertLB( this, SW_RES( LB_INS_ATTR )),
aInsertColorFT( this, SW_RES( FT_INS_COL )),
aInsertColorLB( this, SW_RES( LB_INS_COL )),
aInsertedPreviewWN( this, SW_RES( WIN_INS )),
aDeletedFT( this, SW_RES( FT_CHG_DELETE )),
aDeletedAttrFT( this, SW_RES( FT_DEL_ATTR )),
aDeletedLB( this, SW_RES( LB_DEL_ATTR )),
aDeletedColorFT( this, SW_RES( FT_DEL_COL )),
aDeletedColorLB( this, SW_RES( LB_DEL_COL )),
aDeletedPreviewWN( this, SW_RES( WIN_DEL )),
aChangedFT( this, SW_RES( FT_CHG_CHANGE )),
aChangedAttrFT( this, SW_RES( FT_CHG_ATTR )),
aChangedLB( this, SW_RES( LB_CHG_ATTR )),
aChangedColorFT( this, SW_RES( FT_CHG_COL )),
aChangedColorLB( this, SW_RES( LB_CHG_COL )),
aChangedPreviewWN( this, SW_RES( WIN_CHG )),
aChangedFL ( this, SW_RES( FL_LC )),
aMarkPosFT ( this, SW_RES( FT_MARKPOS )),
aMarkPosLB ( this, SW_RES( LB_MARKPOS )),
aMarkColorFT ( this, SW_RES( FT_LC_COL )),
aMarkColorLB ( this, SW_RES( LB_LC_COL )),
aMarkPreviewWN ( this, SW_RES( WIN_MARK )),
sAuthor ( SW_RES( STR_AUTHOR )),
sNone ( SW_RES( STR_NOTHING ))
{
FreeResource();
for(sal_uInt16 i = 0; i < aInsertLB.GetEntryCount(); i++)
{
String sEntry(aInsertLB.GetEntry(i));
aDeletedLB.InsertEntry(sEntry);
aChangedLB.InsertEntry(sEntry);
};
// remove strikethrough from insert and change and underline + double
// underline from delete
aInsertLB.RemoveEntry(5);
aChangedLB.RemoveEntry(5);
aDeletedLB.RemoveEntry(4);
aDeletedLB.RemoveEntry(3);
Link aLk = LINK(this, SwRedlineOptionsTabPage, AttribHdl);
aInsertLB.SetSelectHdl( aLk );
aDeletedLB.SetSelectHdl( aLk );
aChangedLB.SetSelectHdl( aLk );
aLk = LINK(this, SwRedlineOptionsTabPage, ColorHdl);
aInsertColorLB.SetSelectHdl( aLk );
aDeletedColorLB.SetSelectHdl( aLk );
aChangedColorLB.SetSelectHdl( aLk );
aLk = LINK(this, SwRedlineOptionsTabPage, ChangedMaskPrevHdl);
aMarkPosLB.SetSelectHdl( aLk );
aMarkColorLB.SetSelectHdl( aLk );
//solution: set different accessible name of four color box
aInsertColorLB.SetAccessibleName(::rtl::OUString( aInsertFT.GetDisplayText()) + ::rtl::OUString(aInsertColorFT.GetDisplayText()));
aDeletedColorLB.SetAccessibleName(::rtl::OUString( aDeletedFT.GetDisplayText()) + ::rtl::OUString( aDeletedColorFT.GetDisplayText()));
aChangedColorLB.SetAccessibleName(::rtl::OUString( aChangedFT.GetDisplayText()) + ::rtl::OUString( aChangedColorFT.GetDisplayText()));
aMarkColorLB.SetAccessibleName(::rtl::OUString( aMarkPosFT.GetDisplayText()) + ::rtl::OUString( aMarkColorFT.GetDisplayText()));
}
SwRedlineOptionsTabPage::~SwRedlineOptionsTabPage()
{
}
SfxTabPage* SwRedlineOptionsTabPage::Create( Window* pParent, const SfxItemSet& rSet)
{
return new SwRedlineOptionsTabPage( pParent, rSet );
}
sal_Bool SwRedlineOptionsTabPage::FillItemSet( SfxItemSet& )
{
CharAttr *pAttr;
SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
AuthorCharAttr aInsertedAttr;
AuthorCharAttr aDeletedAttr;
AuthorCharAttr aChangedAttr;
AuthorCharAttr aOldInsertAttr(pOpt->GetInsertAuthorAttr());
AuthorCharAttr aOldDeletedAttr(pOpt->GetDeletedAuthorAttr());
AuthorCharAttr aOldChangedAttr(pOpt->GetFormatAuthorAttr());
ColorData nOldMarkColor = pOpt->GetMarkAlignColor().GetColor();
sal_uInt16 nOldMarkMode = pOpt->GetMarkAlignMode();
sal_uInt16 nPos = aInsertLB.GetSelectEntryPos();
if (nPos != LISTBOX_ENTRY_NOTFOUND)
{
pAttr = (CharAttr *)aInsertLB.GetEntryData(nPos);
aInsertedAttr.nItemId = pAttr->nItemId;
aInsertedAttr.nAttr = pAttr->nAttr;
nPos = aInsertColorLB.GetSelectEntryPos();
switch (nPos)
{
case 0:
aInsertedAttr.nColor = COL_NONE;
break;
case 1:
case LISTBOX_ENTRY_NOTFOUND:
aInsertedAttr.nColor = COL_TRANSPARENT;
break;
default:
aInsertedAttr.nColor = aInsertColorLB.GetEntryColor(nPos).GetColor();
break;
}
pOpt->SetInsertAuthorAttr(aInsertedAttr);
}
nPos = aDeletedLB.GetSelectEntryPos();
if (nPos != LISTBOX_ENTRY_NOTFOUND)
{
pAttr = (CharAttr *)aDeletedLB.GetEntryData(nPos);
aDeletedAttr.nItemId = pAttr->nItemId;
aDeletedAttr.nAttr = pAttr->nAttr;
nPos = aDeletedColorLB.GetSelectEntryPos();
switch (nPos)
{
case 0:
aDeletedAttr.nColor = COL_NONE;
break;
case 1:
case LISTBOX_ENTRY_NOTFOUND:
aDeletedAttr.nColor = COL_TRANSPARENT;
break;
default:
aDeletedAttr.nColor = aDeletedColorLB.GetEntryColor(nPos).GetColor();
break;
}
pOpt->SetDeletedAuthorAttr(aDeletedAttr);
}
nPos = aChangedLB.GetSelectEntryPos();
if (nPos != LISTBOX_ENTRY_NOTFOUND)
{
pAttr = (CharAttr *)aChangedLB.GetEntryData(nPos);
aChangedAttr.nItemId = pAttr->nItemId;
aChangedAttr.nAttr = pAttr->nAttr;
nPos = aChangedColorLB.GetSelectEntryPos();
switch (nPos)
{
case 0:
aChangedAttr.nColor = COL_NONE;
break;
case 1:
case LISTBOX_ENTRY_NOTFOUND:
aChangedAttr.nColor = COL_TRANSPARENT;
break;
default:
aChangedAttr.nColor = aChangedColorLB.GetEntryColor(nPos).GetColor();
break;
}
pOpt->SetFormatAuthorAttr(aChangedAttr);
}
nPos = 0;
switch (aMarkPosLB.GetSelectEntryPos())
{
case 0: nPos = text::HoriOrientation::NONE; break;
case 1: nPos = text::HoriOrientation::LEFT; break;
case 2: nPos = text::HoriOrientation::RIGHT; break;
case 3: nPos = text::HoriOrientation::OUTSIDE; break;
case 4: nPos = text::HoriOrientation::INSIDE; break;
}
pOpt->SetMarkAlignMode(nPos);
pOpt->SetMarkAlignColor(aMarkColorLB.GetSelectEntryColor());
if (!(aInsertedAttr == aOldInsertAttr) ||
!(aDeletedAttr == aOldDeletedAttr) ||
!(aChangedAttr == aOldChangedAttr) ||
nOldMarkColor != pOpt->GetMarkAlignColor().GetColor() ||
nOldMarkMode != pOpt->GetMarkAlignMode())
{
// Alle Dokumente aktualisieren
TypeId aType(TYPE(SwDocShell));
SwDocShell* pDocShell = (SwDocShell*)SfxObjectShell::GetFirst(&aType);
while( pDocShell )
{
pDocShell->GetWrtShell()->UpdateRedlineAttr();
pDocShell = (SwDocShell*)SfxObjectShell::GetNext(*pDocShell, &aType);
}
}
return sal_False;
}
void SwRedlineOptionsTabPage::Reset( const SfxItemSet& )
{
const SwModuleOptions *pOpt = SW_MOD()->GetModuleConfig();
const AuthorCharAttr &rInsertAttr = pOpt->GetInsertAuthorAttr();
const AuthorCharAttr &rDeletedAttr = pOpt->GetDeletedAuthorAttr();
const AuthorCharAttr &rChangedAttr = pOpt->GetFormatAuthorAttr();
// Preview initialisieren
InitFontStyle(aInsertedPreviewWN);
InitFontStyle(aDeletedPreviewWN);
InitFontStyle(aChangedPreviewWN);
// Farblistboxen initialisieren
String sColor;
aInsertColorLB.SetUpdateMode(sal_False);
aDeletedColorLB.SetUpdateMode(sal_False);
aChangedColorLB.SetUpdateMode(sal_False);
aMarkColorLB.SetUpdateMode(sal_False);
aInsertColorLB.InsertEntry(sNone);
aDeletedColorLB.InsertEntry(sNone);
aChangedColorLB.InsertEntry(sNone);
aInsertColorLB.InsertEntry(sAuthor);
aDeletedColorLB.InsertEntry(sAuthor);
aChangedColorLB.InsertEntry(sAuthor);
XColorListSharedPtr aColorTbl = XColorList::GetStdColorList();
sal_uInt16 i;
for( i = 0; i < aColorTbl->Count(); ++i )
{
XColorEntry* pEntry = aColorTbl->GetColor( i );
Color aColor = pEntry->GetColor();
String sName = pEntry->GetName();
aInsertColorLB.InsertEntry( aColor, sName );
aDeletedColorLB.InsertEntry( aColor, sName );
aChangedColorLB.InsertEntry( aColor, sName );
aMarkColorLB.InsertEntry( aColor, sName );
}
aInsertColorLB.SetUpdateMode( sal_True );
aDeletedColorLB.SetUpdateMode( sal_True );
aChangedColorLB.SetUpdateMode( sal_True );
aMarkColorLB.SetUpdateMode( sal_True );
ColorData nColor = rInsertAttr.nColor;
switch (nColor)
{
case COL_TRANSPARENT:
aInsertColorLB.SelectEntryPos(1);
break;
case COL_NONE:
aInsertColorLB.SelectEntryPos(0);
break;
default:
aInsertColorLB.SelectEntry(Color(nColor));
}
nColor = rDeletedAttr.nColor;
switch (nColor)
{
case COL_TRANSPARENT:
aDeletedColorLB.SelectEntryPos(1);
break;
case COL_NONE:
aDeletedColorLB.SelectEntryPos(0);
break;
default:
aDeletedColorLB.SelectEntry(Color(nColor));
}
nColor = rChangedAttr.nColor;
switch (nColor)
{
case COL_TRANSPARENT:
aChangedColorLB.SelectEntryPos(1);
break;
case COL_NONE:
aChangedColorLB.SelectEntryPos(0);
break;
default:
aChangedColorLB.SelectEntry(Color(nColor));
}
aMarkColorLB.SelectEntry(pOpt->GetMarkAlignColor());
aInsertLB.SelectEntryPos(0);
aDeletedLB.SelectEntryPos(0);
aChangedLB.SelectEntryPos(0);
lcl_FillRedlineAttrListBox(aInsertLB, rInsertAttr, aInsertAttrMap,
sizeof(aInsertAttrMap) / sizeof(sal_uInt16));
lcl_FillRedlineAttrListBox(aDeletedLB, rDeletedAttr, aDeletedAttrMap,
sizeof(aDeletedAttrMap) / sizeof(sal_uInt16));
lcl_FillRedlineAttrListBox(aChangedLB, rChangedAttr, aChangedAttrMap,
sizeof(aChangedAttrMap) / sizeof(sal_uInt16));
sal_uInt16 nPos = 0;
switch (pOpt->GetMarkAlignMode())
{
case text::HoriOrientation::NONE: nPos = 0; break;
case text::HoriOrientation::LEFT: nPos = 1; break;
case text::HoriOrientation::RIGHT: nPos = 2; break;
case text::HoriOrientation::OUTSIDE: nPos = 3; break;
case text::HoriOrientation::INSIDE: nPos = 4; break;
}
aMarkPosLB.SelectEntryPos(nPos);
// Einstellungen in Preview anzeigen
AttribHdl(&aInsertLB);
ColorHdl(&aInsertColorLB);
AttribHdl(&aDeletedLB);
ColorHdl(&aInsertColorLB);
AttribHdl(&aChangedLB);
ColorHdl(&aChangedColorLB);
ChangedMaskPrevHdl();
}
IMPL_LINK( SwRedlineOptionsTabPage, AttribHdl, ListBox *, pLB )
{
SvxFontPrevWindow *pPrev = 0;
ColorListBox *pColorLB;
if (pLB == &aInsertLB)
{
pColorLB = &aInsertColorLB;
pPrev = &aInsertedPreviewWN;
}
else if (pLB == &aDeletedLB)
{
pColorLB = &aDeletedColorLB;
pPrev = &aDeletedPreviewWN;
}
else
{
pColorLB = &aChangedColorLB;
pPrev = &aChangedPreviewWN;
}
SvxFont& rFont = pPrev->GetFont();
SvxFont& rCJKFont = pPrev->GetCJKFont();
rFont.SetWeight(WEIGHT_NORMAL);
rCJKFont.SetWeight(WEIGHT_NORMAL);
rFont.SetItalic(ITALIC_NONE);
rCJKFont.SetItalic(ITALIC_NONE);
rFont.SetUnderline(UNDERLINE_NONE);
rCJKFont.SetUnderline(UNDERLINE_NONE);
rFont.SetStrikeout(STRIKEOUT_NONE);
rCJKFont.SetStrikeout(STRIKEOUT_NONE);
rFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
rCJKFont.SetCaseMap(SVX_CASEMAP_NOT_MAPPED);
sal_uInt16 nPos = pColorLB->GetSelectEntryPos();
switch( nPos )
{
case 0:
rFont.SetColor( Color( COL_BLACK ) );
rCJKFont.SetColor( Color( COL_BLACK ) );
break;
case 1:
case LISTBOX_ENTRY_NOTFOUND:
rFont.SetColor( Color( COL_RED ) );
rCJKFont.SetColor( Color( COL_RED ) );
break;
default:
rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
break;
}
nPos = pLB->GetSelectEntryPos();
if( nPos == LISTBOX_ENTRY_NOTFOUND )
nPos = 0;
CharAttr* pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
//switch off preview background color
pPrev->ResetColor();
switch (pAttr->nItemId)
{
case SID_ATTR_CHAR_WEIGHT:
rFont.SetWeight( ( FontWeight ) pAttr->nAttr );
rCJKFont.SetWeight( ( FontWeight ) pAttr->nAttr );
break;
case SID_ATTR_CHAR_POSTURE:
rFont.SetItalic( ( FontItalic ) pAttr->nAttr );
rCJKFont.SetItalic( ( FontItalic ) pAttr->nAttr );
break;
case SID_ATTR_CHAR_UNDERLINE:
rFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
rCJKFont.SetUnderline( ( FontUnderline ) pAttr->nAttr );
break;
case SID_ATTR_CHAR_STRIKEOUT:
rFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
rCJKFont.SetStrikeout( ( FontStrikeout ) pAttr->nAttr );
break;
case SID_ATTR_CHAR_CASEMAP:
rFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
rCJKFont.SetCaseMap( ( SvxCaseMap ) pAttr->nAttr );
break;
case SID_ATTR_BRUSH:
{
nPos = pColorLB->GetSelectEntryPos();
if( nPos )
pPrev->SetColor( pColorLB->GetSelectEntryColor() );
else
pPrev->SetColor( Color( COL_LIGHTGRAY ) );
rFont.SetColor( Color( COL_BLACK ) );
rCJKFont.SetColor( Color( COL_BLACK ) );
}
break;
}
pPrev->Invalidate();
return 0;
}
IMPL_LINK( SwRedlineOptionsTabPage, ColorHdl, ColorListBox *, pColorLB )
{
SvxFontPrevWindow *pPrev = 0;
ListBox* pLB;
if (pColorLB == &aInsertColorLB)
{
pLB = &aInsertLB;
pPrev = &aInsertedPreviewWN;
}
else if (pColorLB == &aDeletedColorLB)
{
pLB = &aDeletedLB;
pPrev = &aDeletedPreviewWN;
}
else
{
pLB = &aChangedLB;
pPrev = &aChangedPreviewWN;
}
SvxFont& rFont = pPrev->GetFont();
SvxFont& rCJKFont = pPrev->GetCJKFont();
sal_uInt16 nPos = pLB->GetSelectEntryPos();
if( nPos == LISTBOX_ENTRY_NOTFOUND )
nPos = 0;
CharAttr* pAttr = ( CharAttr* ) pLB->GetEntryData( nPos );
if( pAttr->nItemId == SID_ATTR_BRUSH )
{
rFont.SetColor( Color( COL_BLACK ) );
rCJKFont.SetColor( Color( COL_BLACK ) );
nPos = pColorLB->GetSelectEntryPos();
if( nPos && nPos != LISTBOX_ENTRY_NOTFOUND )
pPrev->SetColor( pColorLB->GetSelectEntryColor() );
else
pPrev->SetColor( Color( COL_LIGHTGRAY ) );
}
else
{
nPos = pColorLB->GetSelectEntryPos();
switch( nPos )
{
case 0:
rFont.SetColor( Color( COL_BLACK ) );
rCJKFont.SetColor( Color( COL_BLACK ) );
break;
case 1:
case LISTBOX_ENTRY_NOTFOUND:
rFont.SetColor( Color( COL_RED ) );
rCJKFont.SetColor( Color( COL_RED ) );
break;
default:
rFont.SetColor( pColorLB->GetEntryColor( nPos ) );
rCJKFont.SetColor( pColorLB->GetEntryColor( nPos ) );
break;
}
}
pPrev->Invalidate();
return 0;
}
IMPL_LINK( SwRedlineOptionsTabPage, ChangedMaskPrevHdl, ListBox *, EMPTYARG )
{
aMarkPreviewWN.SetMarkPos(aMarkPosLB.GetSelectEntryPos());
aMarkPreviewWN.SetColor(aMarkColorLB.GetSelectEntryColor().GetColor());
aMarkPreviewWN.Invalidate();
return 0;
}
void SwRedlineOptionsTabPage::InitFontStyle(SvxFontPrevWindow& rExampleWin)
{
const AllSettings& rAllSettings = Application::GetSettings();
LanguageType eLangType = rAllSettings.GetUILanguage();
Color aBackCol( rAllSettings.GetStyleSettings().GetWindowColor() );
SvxFont& rFont = rExampleWin.GetFont();
SvxFont& rCJKFont = rExampleWin.GetCJKFont();
SvxFont& rCTLFont = rExampleWin.GetCTLFont();
Font aFont( OutputDevice::GetDefaultFont( DEFAULTFONT_SERIF, eLangType,
DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
Font aCJKFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CJK_TEXT, eLangType,
DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
Font aCTLFont( OutputDevice::GetDefaultFont( DEFAULTFONT_CTL_TEXT, eLangType,
DEFAULTFONT_FLAGS_ONLYONE, &rExampleWin ) );
const Size aDefSize( 0, 12 );
aFont.SetSize( aDefSize );
aCJKFont.SetSize( aDefSize );
aCTLFont.SetSize( aDefSize );
aFont.SetFillColor( aBackCol );
aCJKFont.SetFillColor( aBackCol );
aCTLFont.SetFillColor( aBackCol );
aFont.SetWeight( WEIGHT_NORMAL );
aCJKFont.SetWeight( WEIGHT_NORMAL );
aCTLFont.SetWeight( WEIGHT_NORMAL );
rFont = aFont;
rCJKFont = aCJKFont;
rCTLFont = aCTLFont;
const Size aNewSize( 0, rExampleWin.GetOutputSize().Height() * 2 / 3 );
rFont.SetSize( aNewSize );
rCJKFont.SetSize( aNewSize );
rExampleWin.SetFont( rFont, rCJKFont,rCTLFont );
rExampleWin.UseResourceText();
Wallpaper aWall( aBackCol );
rExampleWin.SetBackground( aWall );
rExampleWin.Invalidate();
}
#ifdef DBG_UTIL
/*******************************************************
******************************************************/
/*----------------- OS 11.01.95 -----------------------
TabPage Testeinstellungen
-------------------------------------------------------*/
void lcl_SetPosSize(Window& rWin, Point aPos, Size aSize)
{
aPos = rWin.LogicToPixel(aPos, MAP_APPFONT);
aSize = rWin.OutputDevice::LogicToPixel(aSize, MAP_APPFONT);
rWin.SetPosSizePixel(aPos, aSize);
}
SwTestTabPage::SwTestTabPage( Window* pParent,
const SfxItemSet& rCoreSet) :
SfxTabPage( pParent, WB_HIDE, rCoreSet),
aTestFL ( this, WB_GROUP ),
aTest1CBox ( this, 0 ),
aTest2CBox ( this, 0 ),
aTest3CBox ( this, 0 ),
aTest4CBox ( this, 0 ),
aTest5CBox ( this, 0 ),
aTest6CBox ( this, 0 ),
aTest7CBox ( this, 0 ),
aTest8CBox ( this, 0 ),
aTest9CBox ( this, 0 ),
aTest10CBox ( this, 0 ),
bAttrModified( sal_False )
{
lcl_SetPosSize(*this, Point(0,0), Size(260 , 135));
lcl_SetPosSize(aTestFL, Point(6,2), Size(209,8));
lcl_SetPosSize(aTest1CBox , Point(12 , 14), Size(74 , 10));
lcl_SetPosSize(aTest2CBox , Point(12 , 27), Size(74 , 10));
lcl_SetPosSize(aTest3CBox , Point(12 , 40), Size(74 , 10));
lcl_SetPosSize(aTest4CBox , Point(12 , 53), Size(74 , 10));
lcl_SetPosSize(aTest5CBox , Point(12 , 66), Size(74 , 10));
lcl_SetPosSize(aTest6CBox , Point(116, 14), Size(74 , 10));
lcl_SetPosSize(aTest7CBox , Point(116, 27), Size(74 , 10));
lcl_SetPosSize(aTest8CBox , Point(116, 40), Size(74 , 10));
lcl_SetPosSize(aTest9CBox , Point(116, 53), Size(74 , 10));
lcl_SetPosSize(aTest10CBox , Point(116, 66), Size(74 , 10));
aTestFL.SetText( String(ByteString("Einstellungen nur f\xFCr Testzwecke" ), RTL_TEXTENCODING_MS_1252));
aTest1CBox .SetText( C2S("unused"));
aTest2CBox .SetText( C2S("dynamic"));
aTest3CBox .SetText( C2S("No calm" ));
aTest4CBox .SetText( C2S("WYSIWYG debug" ));
aTest5CBox .SetText( C2S("No idle format" ));
aTest6CBox .SetText( C2S("No screen adj" ));
aTest7CBox .SetText( C2S("win format" ));
aTest8CBox .SetText( C2S("No Scroll" ));
aTest9CBox .SetText( C2S("DrawingLayerNotLoading"));
aTest10CBox.SetText( C2S("AutoFormat by Input" ));
aTestFL.Show();
aTest1CBox .Show();
aTest2CBox .Show();
aTest3CBox .Show();
aTest4CBox .Show();
aTest5CBox .Show();
aTest6CBox .Show();
aTest7CBox .Show();
aTest8CBox .Show();
aTest9CBox .Show();
aTest10CBox.Show();
Init();
}
//------------------------------------------------------------------------
SfxTabPage* SwTestTabPage::Create( Window* pParent,
const SfxItemSet& rAttrSet )
{
return ( new SwTestTabPage( pParent, rAttrSet ) );
}
//------------------------------------------------------------------------
sal_Bool SwTestTabPage::FillItemSet( SfxItemSet& rCoreSet )
{
if ( bAttrModified )
{
SwTestItem aTestItem(FN_PARAM_SWTEST);
aTestItem.bTest1=aTest1CBox.IsChecked();
aTestItem.bTest2=aTest2CBox.IsChecked();
aTestItem.bTest3=aTest3CBox.IsChecked();
aTestItem.bTest4=aTest4CBox.IsChecked();
aTestItem.bTest5=aTest5CBox.IsChecked();
aTestItem.bTest6=aTest6CBox.IsChecked();
aTestItem.bTest7=aTest7CBox.IsChecked();
aTestItem.bTest8=aTest8CBox.IsChecked();
aTestItem.bTest9=aTest9CBox.IsChecked();
aTestItem.bTest10=aTest10CBox.IsChecked();
rCoreSet.Put(aTestItem);
}
return bAttrModified;
}
//------------------------------------------------------------------------
void SwTestTabPage::Reset( const SfxItemSet& )
{
const SfxItemSet& rSet = GetItemSet();
const SwTestItem* pTestAttr = 0;
if( SFX_ITEM_SET == rSet.GetItemState( FN_PARAM_SWTEST , sal_False,
(const SfxPoolItem**)&pTestAttr ))
{
aTest1CBox.Check(pTestAttr->bTest1);
aTest2CBox.Check(pTestAttr->bTest2);
aTest3CBox.Check(pTestAttr->bTest3);
aTest4CBox.Check(pTestAttr->bTest4);
aTest5CBox.Check(pTestAttr->bTest5);
aTest6CBox.Check(pTestAttr->bTest6);
aTest7CBox.Check(pTestAttr->bTest7);
aTest8CBox.Check(pTestAttr->bTest8);
aTest9CBox.Check(pTestAttr->bTest9);
aTest10CBox.Check(pTestAttr->bTest10);
}
}
//------------------------------------------------------------------------
void SwTestTabPage::Init()
{
// handler
Link aLk = LINK( this, SwTestTabPage, AutoClickHdl );
aTest1CBox.SetClickHdl( aLk );
aTest2CBox.SetClickHdl( aLk );
aTest3CBox.SetClickHdl( aLk );
aTest4CBox.SetClickHdl( aLk );
aTest5CBox.SetClickHdl( aLk );
aTest6CBox.SetClickHdl( aLk );
aTest7CBox.SetClickHdl( aLk );
aTest8CBox.SetClickHdl( aLk );
aTest9CBox.SetClickHdl( aLk );
aTest10CBox.SetClickHdl( aLk );
}
//------------------------------------------------------------------------
IMPL_LINK_INLINE_START( SwTestTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
{
bAttrModified = sal_True;
return 0;
}
IMPL_LINK_INLINE_END( SwTestTabPage, AutoClickHdl, CheckBox *, EMPTYARG )
#endif