/************************************************************** * * 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 #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include 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 ) ), 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 ); 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.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& 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