1efeef26fSAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3efeef26fSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4efeef26fSAndrew Rist * or more contributor license agreements. See the NOTICE file 5efeef26fSAndrew Rist * distributed with this work for additional information 6efeef26fSAndrew Rist * regarding copyright ownership. The ASF licenses this file 7efeef26fSAndrew Rist * to you under the Apache License, Version 2.0 (the 8efeef26fSAndrew Rist * "License"); you may not use this file except in compliance 9efeef26fSAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11efeef26fSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13efeef26fSAndrew Rist * Unless required by applicable law or agreed to in writing, 14efeef26fSAndrew Rist * software distributed under the License is distributed on an 15efeef26fSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16efeef26fSAndrew Rist * KIND, either express or implied. See the License for the 17efeef26fSAndrew Rist * specific language governing permissions and limitations 18efeef26fSAndrew Rist * under the License. 19cdf0e10cSrcweir * 20efeef26fSAndrew Rist *************************************************************/ 21efeef26fSAndrew Rist 22cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 23cdf0e10cSrcweir #include "precompiled_sw.hxx" 24cdf0e10cSrcweir 25cdf0e10cSrcweir #include <com/sun/star/style/XStyleFamiliesSupplier.hpp> 26cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp> 27cdf0e10cSrcweir #include <com/sun/star/container/XNameAccess.hpp> 28cdf0e10cSrcweir #include <hintids.hxx> 29cdf0e10cSrcweir #include <sfx2/app.hxx> 30cdf0e10cSrcweir #include <svl/whiter.hxx> 31cdf0e10cSrcweir #include <sfx2/templdlg.hxx> 32cdf0e10cSrcweir #include <sfx2/tplpitem.hxx> 33cdf0e10cSrcweir #include <sfx2/request.hxx> 34cdf0e10cSrcweir #include <sfx2/dispatch.hxx> 35cdf0e10cSrcweir #include <sfx2/newstyle.hxx> 36cdf0e10cSrcweir #include <sfx2/printer.hxx> 37cdf0e10cSrcweir #include <svl/macitem.hxx> 38cdf0e10cSrcweir #include <editeng/brshitem.hxx> 39cdf0e10cSrcweir #include <svl/stritem.hxx> 40cdf0e10cSrcweir #include <svl/languageoptions.hxx> 41cdf0e10cSrcweir #include <editeng/eeitem.hxx> 42cdf0e10cSrcweir #include <svx/htmlmode.hxx> 433f09c2ceSJürgen Schmidt #include <svx/xdef.hxx> 44cdf0e10cSrcweir #include <swmodule.hxx> 45cdf0e10cSrcweir #include <wdocsh.hxx> 46cdf0e10cSrcweir #include <fmtfsize.hxx> 47cdf0e10cSrcweir #include <fchrfmt.hxx> 48cdf0e10cSrcweir #include <svtools/htmlcfg.hxx> 49cdf0e10cSrcweir #include <SwStyleNameMapper.hxx> 50cdf0e10cSrcweir #include <SwRewriter.hxx> 51cdf0e10cSrcweir #include <numrule.hxx> 52cdf0e10cSrcweir #include <swundo.hxx> 5356b35d86SArmin Le Grand #include <svx/svdmodel.hxx> 5456b35d86SArmin Le Grand #include <svx/drawitem.hxx> 55cdf0e10cSrcweir #include "view.hxx" 56cdf0e10cSrcweir #include "wrtsh.hxx" 57cdf0e10cSrcweir #include "docsh.hxx" 58cdf0e10cSrcweir #include "uitool.hxx" 59cdf0e10cSrcweir #include "cmdid.h" 60cdf0e10cSrcweir #include "globals.hrc" 61cdf0e10cSrcweir #include "viewopt.hxx" 62cdf0e10cSrcweir #include <doc.hxx> 63cdf0e10cSrcweir #include <IDocumentUndoRedo.hxx> 64cdf0e10cSrcweir #include "swstyle.h" 65cdf0e10cSrcweir #include "frmfmt.hxx" 66cdf0e10cSrcweir #include "charfmt.hxx" 67cdf0e10cSrcweir #include "poolfmt.hxx" 68cdf0e10cSrcweir #include "pagedesc.hxx" 69cdf0e10cSrcweir #include "docstyle.hxx" 70cdf0e10cSrcweir #include "uiitems.hxx" 71cdf0e10cSrcweir #include "fmtcol.hxx" 72cdf0e10cSrcweir #include "frmmgr.hxx" //SwFrmValid 73cdf0e10cSrcweir #include "swevent.hxx" 74cdf0e10cSrcweir #include "edtwin.hxx" 75cdf0e10cSrcweir #include "unochart.hxx" 76cdf0e10cSrcweir #include "app.hrc" 77cdf0e10cSrcweir #include <fmtui.hrc> 78cdf0e10cSrcweir #include "swabstdlg.hxx" 79cdf0e10cSrcweir #include <list.hxx> 80cdf0e10cSrcweir #include <paratr.hxx> //#outline level,add by zhaojianwei 81*26ea3662SArmin Le Grand #include <drawdoc.hxx> 82cdf0e10cSrcweir 83cdf0e10cSrcweir using namespace ::com::sun::star; 84cdf0e10cSrcweir 85cdf0e10cSrcweir /*-------------------------------------------------------------------- 86cdf0e10cSrcweir Beschreibung: 87cdf0e10cSrcweir --------------------------------------------------------------------*/ 88cdf0e10cSrcweir 89cdf0e10cSrcweir 90cdf0e10cSrcweir void SwDocShell::StateStyleSheet(SfxItemSet& rSet, SwWrtShell* pSh) 91cdf0e10cSrcweir { 92cdf0e10cSrcweir SfxWhichIter aIter(rSet); 93cdf0e10cSrcweir sal_uInt16 nWhich = aIter.FirstWhich(); 94cdf0e10cSrcweir sal_uInt16 nActualFamily = USHRT_MAX; 95cdf0e10cSrcweir 96cdf0e10cSrcweir SwWrtShell* pShell = pSh ? pSh : GetWrtShell(); 97cdf0e10cSrcweir if(!pShell) 98cdf0e10cSrcweir { 99cdf0e10cSrcweir while (nWhich) 100cdf0e10cSrcweir { 101cdf0e10cSrcweir rSet.DisableItem(nWhich); 102cdf0e10cSrcweir nWhich = aIter.NextWhich(); 103cdf0e10cSrcweir } 104cdf0e10cSrcweir return; 105cdf0e10cSrcweir } 106cdf0e10cSrcweir else 107cdf0e10cSrcweir { 108cdf0e10cSrcweir SfxViewFrame* pFrame = pShell->GetView().GetViewFrame(); 109cdf0e10cSrcweir const ISfxTemplateCommon* pCommon = SFX_APP()->GetCurrentTemplateCommon(pFrame->GetBindings()); 110cdf0e10cSrcweir if( pCommon ) 111cdf0e10cSrcweir nActualFamily = static_cast< sal_uInt16 >(pCommon->GetActualFamily()); 112cdf0e10cSrcweir } 113cdf0e10cSrcweir 114cdf0e10cSrcweir while (nWhich) 115cdf0e10cSrcweir { 116cdf0e10cSrcweir // aktuelle Vorlage zu jeder Familie ermitteln 117cdf0e10cSrcweir // 118cdf0e10cSrcweir String aName; 119cdf0e10cSrcweir switch (nWhich) 120cdf0e10cSrcweir { 121cdf0e10cSrcweir case SID_STYLE_APPLY: 122cdf0e10cSrcweir {//hier wird die Vorlage und ihre Familie an die StyleBox 123cdf0e10cSrcweir //uebergeben, damit diese Familie angezeigt wird 124cdf0e10cSrcweir if(pShell->IsFrmSelected()) 125cdf0e10cSrcweir { 126cdf0e10cSrcweir SwFrmFmt* pFmt = pShell->GetCurFrmFmt(); 127cdf0e10cSrcweir if( pFmt ) 128cdf0e10cSrcweir aName = pFmt->GetName(); 129cdf0e10cSrcweir } 130cdf0e10cSrcweir else 131cdf0e10cSrcweir { 132cdf0e10cSrcweir SwTxtFmtColl* pColl = pShell->GetCurTxtFmtColl(); 133cdf0e10cSrcweir if(pColl) 134cdf0e10cSrcweir aName = pColl->GetName(); 135cdf0e10cSrcweir } 136cdf0e10cSrcweir rSet.Put(SfxTemplateItem(nWhich, aName)); 137cdf0e10cSrcweir } 138cdf0e10cSrcweir break; 139cdf0e10cSrcweir case SID_STYLE_FAMILY1: 140cdf0e10cSrcweir if( !pShell->IsFrmSelected() ) 141cdf0e10cSrcweir { 142cdf0e10cSrcweir SwCharFmt* pFmt = pShell->GetCurCharFmt(); 143cdf0e10cSrcweir if(pFmt) 144cdf0e10cSrcweir aName = pFmt->GetName(); 145cdf0e10cSrcweir else 146cdf0e10cSrcweir aName = *SwStyleNameMapper::GetTextUINameArray()[ 147cdf0e10cSrcweir RES_POOLCOLL_STANDARD - RES_POOLCOLL_TEXT_BEGIN ]; 148cdf0e10cSrcweir rSet.Put(SfxTemplateItem(nWhich, aName)); 149cdf0e10cSrcweir } 150cdf0e10cSrcweir break; 151cdf0e10cSrcweir 152cdf0e10cSrcweir case SID_STYLE_FAMILY2: 153cdf0e10cSrcweir if(!pShell->IsFrmSelected()) 154cdf0e10cSrcweir { 155cdf0e10cSrcweir SwTxtFmtColl* pColl = pShell->GetCurTxtFmtColl(); 156cdf0e10cSrcweir if(pColl) 157cdf0e10cSrcweir aName = pColl->GetName(); 158cdf0e10cSrcweir 159cdf0e10cSrcweir SfxTemplateItem aItem(nWhich, aName); 160cdf0e10cSrcweir 161cdf0e10cSrcweir sal_uInt16 nMask = 0; 162cdf0e10cSrcweir if( pDoc->get(IDocumentSettingAccess::HTML_MODE) ) 163cdf0e10cSrcweir nMask = SWSTYLEBIT_HTML; 164cdf0e10cSrcweir else 165cdf0e10cSrcweir { 166cdf0e10cSrcweir const int nSelection = pShell->GetFrmType(0,sal_True); 167cdf0e10cSrcweir if(pShell->GetCurTOX()) 168cdf0e10cSrcweir nMask = SWSTYLEBIT_IDX ; 169cdf0e10cSrcweir else if(nSelection & FRMTYPE_HEADER || 170cdf0e10cSrcweir nSelection & FRMTYPE_FOOTER || 171cdf0e10cSrcweir nSelection & FRMTYPE_TABLE || 172cdf0e10cSrcweir nSelection & FRMTYPE_FLY_ANY || 173cdf0e10cSrcweir nSelection & FRMTYPE_FOOTNOTE || 174cdf0e10cSrcweir nSelection & FRMTYPE_FTNPAGE) 175cdf0e10cSrcweir nMask = SWSTYLEBIT_EXTRA; 176cdf0e10cSrcweir else 177cdf0e10cSrcweir nMask = SWSTYLEBIT_TEXT; 178cdf0e10cSrcweir } 179cdf0e10cSrcweir 180cdf0e10cSrcweir aItem.SetValue(nMask); 181cdf0e10cSrcweir rSet.Put(aItem); 182cdf0e10cSrcweir } 183cdf0e10cSrcweir 184cdf0e10cSrcweir break; 185cdf0e10cSrcweir 186cdf0e10cSrcweir case SID_STYLE_FAMILY3: 187cdf0e10cSrcweir 188cdf0e10cSrcweir if( pDoc->get(IDocumentSettingAccess::HTML_MODE) ) 189cdf0e10cSrcweir rSet.DisableItem( nWhich ); 190cdf0e10cSrcweir else 191cdf0e10cSrcweir { 192cdf0e10cSrcweir SwFrmFmt* pFmt = pShell->GetCurFrmFmt(); 193cdf0e10cSrcweir if(pFmt && pShell->IsFrmSelected()) 194cdf0e10cSrcweir { 195cdf0e10cSrcweir aName = pFmt->GetName(); 196cdf0e10cSrcweir rSet.Put(SfxTemplateItem(nWhich, aName)); 197cdf0e10cSrcweir } 198cdf0e10cSrcweir } 199cdf0e10cSrcweir break; 200cdf0e10cSrcweir 201cdf0e10cSrcweir case SID_STYLE_FAMILY4: 202cdf0e10cSrcweir { 203cdf0e10cSrcweir SvxHtmlOptions* pHtmlOpt = SvxHtmlOptions::Get(); 204cdf0e10cSrcweir if( pDoc->get(IDocumentSettingAccess::HTML_MODE) && !pHtmlOpt->IsPrintLayoutExtension()) 205cdf0e10cSrcweir rSet.DisableItem( nWhich ); 206cdf0e10cSrcweir else 207cdf0e10cSrcweir { 208cdf0e10cSrcweir sal_uInt16 n = pShell->GetCurPageDesc( sal_False ); 209cdf0e10cSrcweir if( n < pShell->GetPageDescCnt() ) 210cdf0e10cSrcweir aName = pShell->GetPageDesc( n ).GetName(); 211cdf0e10cSrcweir 212cdf0e10cSrcweir rSet.Put(SfxTemplateItem(nWhich, aName)); 213cdf0e10cSrcweir } 214cdf0e10cSrcweir } 215cdf0e10cSrcweir break; 216cdf0e10cSrcweir case SID_STYLE_FAMILY5: 217cdf0e10cSrcweir { 21834760e49SOliver-Rainer Wittmann const SwNumRule* pRule = pShell->GetNumRuleAtCurrCrsrPos(); 219cdf0e10cSrcweir if( pRule ) 220cdf0e10cSrcweir aName = pRule->GetName(); 221cdf0e10cSrcweir 222cdf0e10cSrcweir rSet.Put(SfxTemplateItem(nWhich, aName)); 223cdf0e10cSrcweir } 224cdf0e10cSrcweir break; 225cdf0e10cSrcweir 226cdf0e10cSrcweir case SID_STYLE_WATERCAN: 227cdf0e10cSrcweir { 228cdf0e10cSrcweir SwEditWin& rEdtWin = pShell->GetView().GetEditWin(); 229cdf0e10cSrcweir SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate(); 230cdf0e10cSrcweir rSet.Put(SfxBoolItem(nWhich, pApply && pApply->eType != 0)); 231cdf0e10cSrcweir } 232cdf0e10cSrcweir break; 233cdf0e10cSrcweir case SID_STYLE_UPDATE_BY_EXAMPLE: 234cdf0e10cSrcweir if( pShell->IsFrmSelected() 235cdf0e10cSrcweir ? SFX_STYLE_FAMILY_FRAME != nActualFamily 236cdf0e10cSrcweir : ( SFX_STYLE_FAMILY_FRAME == nActualFamily || 237cdf0e10cSrcweir SFX_STYLE_FAMILY_PAGE == nActualFamily || 23834760e49SOliver-Rainer Wittmann (SFX_STYLE_FAMILY_PSEUDO == nActualFamily && !pShell->GetNumRuleAtCurrCrsrPos())) ) 239cdf0e10cSrcweir { 240cdf0e10cSrcweir rSet.DisableItem( nWhich ); 241cdf0e10cSrcweir } 242cdf0e10cSrcweir break; 243cdf0e10cSrcweir 244cdf0e10cSrcweir case SID_STYLE_NEW_BY_EXAMPLE: 245cdf0e10cSrcweir if( (pShell->IsFrmSelected() 246cdf0e10cSrcweir ? SFX_STYLE_FAMILY_FRAME != nActualFamily 247cdf0e10cSrcweir : SFX_STYLE_FAMILY_FRAME == nActualFamily) || 24834760e49SOliver-Rainer Wittmann (SFX_STYLE_FAMILY_PSEUDO == nActualFamily && !pShell->GetNumRuleAtCurrCrsrPos()) ) 249cdf0e10cSrcweir { 250cdf0e10cSrcweir rSet.DisableItem( nWhich ); 251cdf0e10cSrcweir } 252cdf0e10cSrcweir break; 253cdf0e10cSrcweir 254cdf0e10cSrcweir default: 255cdf0e10cSrcweir DBG_ERROR( "Invalid SlotId"); 256cdf0e10cSrcweir } 257cdf0e10cSrcweir nWhich = aIter.NextWhich(); 258cdf0e10cSrcweir } 259cdf0e10cSrcweir } 260cdf0e10cSrcweir 261cdf0e10cSrcweir 262cdf0e10cSrcweir /*-------------------------------------------------------------------- 263cdf0e10cSrcweir Beschreibung: StyleSheet-Requeste auswerten 264cdf0e10cSrcweir --------------------------------------------------------------------*/ 265cdf0e10cSrcweir 266cdf0e10cSrcweir 267cdf0e10cSrcweir void SwDocShell::ExecStyleSheet( SfxRequest& rReq ) 268cdf0e10cSrcweir { 269cdf0e10cSrcweir sal_uInt16 nSlot = rReq.GetSlot(); 270cdf0e10cSrcweir sal_uInt16 nRet = 0xffff; 271cdf0e10cSrcweir 272cdf0e10cSrcweir const SfxItemSet* pArgs = rReq.GetArgs(); 273cdf0e10cSrcweir const SfxPoolItem* pItem; 274cdf0e10cSrcweir SwWrtShell* pActShell = 0; 275cdf0e10cSrcweir sal_Bool bSetReturn = sal_True; 276cdf0e10cSrcweir switch (nSlot) 277cdf0e10cSrcweir { 278cdf0e10cSrcweir case SID_STYLE_NEW: 279cdf0e10cSrcweir if( pArgs && SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_FAMILY, 280cdf0e10cSrcweir sal_False, &pItem )) 281cdf0e10cSrcweir { 282ff0525f2SOliver-Rainer Wittmann const sal_uInt16 nFamily = ((const SfxUInt16Item*)pItem)->GetValue(); 283cdf0e10cSrcweir 284cdf0e10cSrcweir String sName; 285cdf0e10cSrcweir sal_uInt16 nMask = 0; 286cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_NEW, 287cdf0e10cSrcweir sal_False, &pItem )) 288cdf0e10cSrcweir sName = ((const SfxStringItem*)pItem)->GetValue(); 289cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_MASK, 290cdf0e10cSrcweir sal_False, &pItem )) 291cdf0e10cSrcweir nMask = ((const SfxUInt16Item*)pItem)->GetValue(); 292cdf0e10cSrcweir String sParent; 293cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState( SID_STYLE_REFERENCE, 294cdf0e10cSrcweir sal_False, &pItem )) 295cdf0e10cSrcweir sParent = ((const SfxStringItem*)pItem)->GetValue(); 296cdf0e10cSrcweir 297ff0525f2SOliver-Rainer Wittmann nRet = Edit( sName, sParent, nFamily, nMask, sal_True, 0, 0, rReq.IsAPI() ); 298cdf0e10cSrcweir } 299cdf0e10cSrcweir break; 300cdf0e10cSrcweir 301cdf0e10cSrcweir case SID_STYLE_APPLY: 302cdf0e10cSrcweir if( !pArgs ) 303cdf0e10cSrcweir { 304cdf0e10cSrcweir GetView()->GetViewFrame()->GetDispatcher()->Execute(SID_STYLE_DESIGNER, sal_False); 305cdf0e10cSrcweir break; 306cdf0e10cSrcweir } 307cdf0e10cSrcweir else 308cdf0e10cSrcweir { 309cdf0e10cSrcweir // convert internal StyleName to DisplayName (slot implementation uses the latter) 310cdf0e10cSrcweir SFX_REQUEST_ARG( rReq, pNameItem, SfxStringItem, SID_APPLY_STYLE, sal_False ); 311cdf0e10cSrcweir SFX_REQUEST_ARG( rReq, pFamilyItem, SfxStringItem, SID_STYLE_FAMILYNAME, sal_False ); 312cdf0e10cSrcweir if ( pFamilyItem && pNameItem ) 313cdf0e10cSrcweir { 314cdf0e10cSrcweir uno::Reference< style::XStyleFamiliesSupplier > xModel(GetModel(), uno::UNO_QUERY); 315cdf0e10cSrcweir try 316cdf0e10cSrcweir { 317cdf0e10cSrcweir uno::Reference< container::XNameAccess > xStyles; 318cdf0e10cSrcweir uno::Reference< container::XNameAccess > xCont = xModel->getStyleFamilies(); 319cdf0e10cSrcweir xCont->getByName(pFamilyItem->GetValue()) >>= xStyles; 320cdf0e10cSrcweir uno::Reference< beans::XPropertySet > xInfo; 321cdf0e10cSrcweir xStyles->getByName( pNameItem->GetValue() ) >>= xInfo; 322cdf0e10cSrcweir ::rtl::OUString aUIName; 323cdf0e10cSrcweir xInfo->getPropertyValue( ::rtl::OUString::createFromAscii("DisplayName") ) >>= aUIName; 324cdf0e10cSrcweir if ( aUIName.getLength() ) 325cdf0e10cSrcweir rReq.AppendItem( SfxStringItem( SID_STYLE_APPLY, aUIName ) ); 326cdf0e10cSrcweir } 327cdf0e10cSrcweir catch( uno::Exception& ) 328cdf0e10cSrcweir { 329cdf0e10cSrcweir } 330cdf0e10cSrcweir } 331cdf0e10cSrcweir } 332cdf0e10cSrcweir 333cdf0e10cSrcweir // intentionally no break 334cdf0e10cSrcweir 335cdf0e10cSrcweir case SID_STYLE_EDIT: 336cdf0e10cSrcweir case SID_STYLE_DELETE: 337cdf0e10cSrcweir case SID_STYLE_WATERCAN: 338cdf0e10cSrcweir case SID_STYLE_FAMILY: 339cdf0e10cSrcweir case SID_STYLE_UPDATE_BY_EXAMPLE: 340cdf0e10cSrcweir case SID_STYLE_NEW_BY_EXAMPLE: 341cdf0e10cSrcweir { 342cdf0e10cSrcweir String aParam; 343cdf0e10cSrcweir sal_uInt16 nFamily = SFX_STYLE_FAMILY_PARA; 344cdf0e10cSrcweir sal_uInt16 nMask = 0; 345cdf0e10cSrcweir 346cdf0e10cSrcweir if( !pArgs ) 347cdf0e10cSrcweir { 348cdf0e10cSrcweir nFamily = SFX_STYLE_FAMILY_PARA; 349cdf0e10cSrcweir 350cdf0e10cSrcweir switch (nSlot) 351cdf0e10cSrcweir { 352cdf0e10cSrcweir case SID_STYLE_NEW_BY_EXAMPLE: 353cdf0e10cSrcweir { 354cdf0e10cSrcweir SfxNewStyleDlg *pDlg = new SfxNewStyleDlg( 0, 355cdf0e10cSrcweir *GetStyleSheetPool()); 356cdf0e10cSrcweir if(RET_OK == pDlg->Execute()) 357cdf0e10cSrcweir { 358cdf0e10cSrcweir aParam = pDlg->GetName(); 359cdf0e10cSrcweir rReq.AppendItem(SfxStringItem(nSlot, aParam)); 360cdf0e10cSrcweir } 361cdf0e10cSrcweir 362cdf0e10cSrcweir delete pDlg; 363cdf0e10cSrcweir } 364cdf0e10cSrcweir break; 365cdf0e10cSrcweir 366cdf0e10cSrcweir case SID_STYLE_UPDATE_BY_EXAMPLE: 367cdf0e10cSrcweir case SID_STYLE_EDIT: 368cdf0e10cSrcweir { 369cdf0e10cSrcweir SwTxtFmtColl* pColl = GetWrtShell()->GetCurTxtFmtColl(); 370cdf0e10cSrcweir if(pColl) 371cdf0e10cSrcweir { 372cdf0e10cSrcweir aParam = pColl->GetName(); 373cdf0e10cSrcweir rReq.AppendItem(SfxStringItem(nSlot, aParam)); 374cdf0e10cSrcweir } 375cdf0e10cSrcweir } 376cdf0e10cSrcweir break; 377cdf0e10cSrcweir } 378cdf0e10cSrcweir } 379cdf0e10cSrcweir else 380cdf0e10cSrcweir { 381cdf0e10cSrcweir ASSERT( pArgs->Count(), "SfxBug ItemSet ist leer"); 382cdf0e10cSrcweir 383cdf0e10cSrcweir SwWrtShell* pShell = GetWrtShell(); 384cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState(nSlot, sal_False, &pItem )) 385cdf0e10cSrcweir aParam = ((const SfxStringItem*)pItem)->GetValue(); 386cdf0e10cSrcweir 387cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState(SID_STYLE_FAMILY, 388cdf0e10cSrcweir sal_False, &pItem )) 389cdf0e10cSrcweir nFamily = ((const SfxUInt16Item*)pItem)->GetValue(); 390cdf0e10cSrcweir 391cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState(SID_STYLE_FAMILYNAME, sal_False, &pItem )) 392cdf0e10cSrcweir { 393cdf0e10cSrcweir String aFamily = ((const SfxStringItem*)pItem)->GetValue(); 394cdf0e10cSrcweir if(aFamily.CompareToAscii("CharacterStyles") == COMPARE_EQUAL) 395cdf0e10cSrcweir nFamily = SFX_STYLE_FAMILY_CHAR; 396cdf0e10cSrcweir else 397cdf0e10cSrcweir if(aFamily.CompareToAscii("ParagraphStyles") == COMPARE_EQUAL) 398cdf0e10cSrcweir nFamily = SFX_STYLE_FAMILY_PARA; 399cdf0e10cSrcweir else 400cdf0e10cSrcweir if(aFamily.CompareToAscii("PageStyles") == COMPARE_EQUAL) 401cdf0e10cSrcweir nFamily = SFX_STYLE_FAMILY_PAGE; 402cdf0e10cSrcweir else 403cdf0e10cSrcweir if(aFamily.CompareToAscii("FrameStyles") == COMPARE_EQUAL) 404cdf0e10cSrcweir nFamily = SFX_STYLE_FAMILY_FRAME; 405cdf0e10cSrcweir else 406cdf0e10cSrcweir if(aFamily.CompareToAscii("NumberingStyles") == COMPARE_EQUAL) 407cdf0e10cSrcweir nFamily = SFX_STYLE_FAMILY_PSEUDO; 408cdf0e10cSrcweir } 409cdf0e10cSrcweir 410cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState(SID_STYLE_MASK, 411cdf0e10cSrcweir sal_False, &pItem )) 412cdf0e10cSrcweir nMask = ((const SfxUInt16Item*)pItem)->GetValue(); 413cdf0e10cSrcweir if( SFX_ITEM_SET == pArgs->GetItemState(FN_PARAM_WRTSHELL, 414cdf0e10cSrcweir sal_False, &pItem )) 415cdf0e10cSrcweir pActShell = pShell = (SwWrtShell*)((SwPtrItem*)pItem)->GetValue(); 416cdf0e10cSrcweir 417cdf0e10cSrcweir if( nSlot == SID_STYLE_UPDATE_BY_EXAMPLE ) 418cdf0e10cSrcweir { 419cdf0e10cSrcweir switch( nFamily ) 420cdf0e10cSrcweir { 421cdf0e10cSrcweir case SFX_STYLE_FAMILY_PARA: 422cdf0e10cSrcweir { 423cdf0e10cSrcweir SwTxtFmtColl* pColl = pShell->GetCurTxtFmtColl(); 424cdf0e10cSrcweir if(pColl) 425cdf0e10cSrcweir aParam = pColl->GetName(); 426cdf0e10cSrcweir } 427cdf0e10cSrcweir break; 428cdf0e10cSrcweir case SFX_STYLE_FAMILY_FRAME: 429cdf0e10cSrcweir { 430cdf0e10cSrcweir SwFrmFmt* pFrm = pWrtShell->GetCurFrmFmt(); 431cdf0e10cSrcweir if( pFrm ) 432cdf0e10cSrcweir aParam = pFrm->GetName(); 433cdf0e10cSrcweir } 434cdf0e10cSrcweir break; 435cdf0e10cSrcweir case SFX_STYLE_FAMILY_CHAR: 436cdf0e10cSrcweir { 437cdf0e10cSrcweir SwCharFmt* pChar = pWrtShell->GetCurCharFmt(); 438cdf0e10cSrcweir if( pChar ) 439cdf0e10cSrcweir aParam = pChar->GetName(); 440cdf0e10cSrcweir } 441cdf0e10cSrcweir break; 442cdf0e10cSrcweir case SFX_STYLE_FAMILY_PSEUDO: 443cdf0e10cSrcweir if(SFX_ITEM_SET == pArgs->GetItemState(SID_STYLE_UPD_BY_EX_NAME, sal_False, &pItem)) 444cdf0e10cSrcweir { 445cdf0e10cSrcweir aParam = ((const SfxStringItem*)pItem)->GetValue(); 446cdf0e10cSrcweir } 447cdf0e10cSrcweir break; 448cdf0e10cSrcweir } 449cdf0e10cSrcweir rReq.AppendItem(SfxStringItem(nSlot, aParam)); 450cdf0e10cSrcweir } 451cdf0e10cSrcweir } 452cdf0e10cSrcweir if (aParam.Len() || nSlot == SID_STYLE_WATERCAN ) 453cdf0e10cSrcweir { 454cdf0e10cSrcweir switch(nSlot) 455cdf0e10cSrcweir { 456cdf0e10cSrcweir case SID_STYLE_EDIT: 457ff0525f2SOliver-Rainer Wittmann nRet = Edit(aParam, aEmptyStr, nFamily, nMask, sal_False, 0, pActShell ); 458cdf0e10cSrcweir break; 459cdf0e10cSrcweir case SID_STYLE_DELETE: 460cdf0e10cSrcweir nRet = Delete(aParam, nFamily); 461cdf0e10cSrcweir break; 462cdf0e10cSrcweir case SID_STYLE_APPLY: 463cdf0e10cSrcweir // Shellwechsel in ApplyStyles 464cdf0e10cSrcweir nRet = ApplyStyles(aParam, nFamily, pActShell, rReq.GetModifier() ); 465cdf0e10cSrcweir break; 466cdf0e10cSrcweir case SID_STYLE_WATERCAN: 467cdf0e10cSrcweir nRet = DoWaterCan(aParam, nFamily); 468cdf0e10cSrcweir break; 469cdf0e10cSrcweir case SID_STYLE_UPDATE_BY_EXAMPLE: 470cdf0e10cSrcweir nRet = UpdateStyle(aParam, nFamily, pActShell); 471cdf0e10cSrcweir break; 472cdf0e10cSrcweir case SID_STYLE_NEW_BY_EXAMPLE: 473cdf0e10cSrcweir { 474cdf0e10cSrcweir nRet = MakeByExample(aParam, nFamily, nMask, pActShell ); 475cdf0e10cSrcweir SfxTemplateDialog* pDlg = SFX_APP()->GetTemplateDialog(); 476cdf0e10cSrcweir 477cdf0e10cSrcweir if(pDlg && pDlg->IsVisible()) 478cdf0e10cSrcweir pDlg->Update(); 479cdf0e10cSrcweir } 480cdf0e10cSrcweir break; 481cdf0e10cSrcweir 482cdf0e10cSrcweir default: 483cdf0e10cSrcweir DBG_ERROR( "Falsche Slot-Id"); 484cdf0e10cSrcweir } 485cdf0e10cSrcweir 486cdf0e10cSrcweir rReq.Done(); 487cdf0e10cSrcweir } 488cdf0e10cSrcweir 489cdf0e10cSrcweir break; 490cdf0e10cSrcweir } 491cdf0e10cSrcweir } 492cdf0e10cSrcweir 493cdf0e10cSrcweir if(bSetReturn) 494cdf0e10cSrcweir { 495cdf0e10cSrcweir if(rReq.IsAPI()) // Basic bekommt nur sal_True oder sal_False 496cdf0e10cSrcweir rReq.SetReturnValue(SfxUInt16Item(nSlot, nRet !=0)); 497cdf0e10cSrcweir else 498cdf0e10cSrcweir rReq.SetReturnValue(SfxUInt16Item(nSlot, nRet)); 499cdf0e10cSrcweir } 500cdf0e10cSrcweir 501cdf0e10cSrcweir } 502cdf0e10cSrcweir 503cdf0e10cSrcweir /*-------------------------------------------------------------------- 504cdf0e10cSrcweir Beschreibung: Edit 505cdf0e10cSrcweir --------------------------------------------------------------------*/ 506cdf0e10cSrcweir 507ff0525f2SOliver-Rainer Wittmann sal_uInt16 SwDocShell::Edit( 508ff0525f2SOliver-Rainer Wittmann const String &rName, 509ff0525f2SOliver-Rainer Wittmann const String &rParent, 510ff0525f2SOliver-Rainer Wittmann const sal_uInt16 nFamily, 511ff0525f2SOliver-Rainer Wittmann sal_uInt16 nMask, 512ff0525f2SOliver-Rainer Wittmann const sal_Bool bNew, 513ff0525f2SOliver-Rainer Wittmann const sal_uInt16 nSlot, 514ff0525f2SOliver-Rainer Wittmann SwWrtShell* pActShell, 515ff0525f2SOliver-Rainer Wittmann const sal_Bool bBasic ) 516cdf0e10cSrcweir { 517cdf0e10cSrcweir ASSERT(GetWrtShell(), "Keine Shell, keine Styles"); 518cdf0e10cSrcweir SfxStyleSheetBase *pStyle = 0; 519cdf0e10cSrcweir 520cdf0e10cSrcweir sal_uInt16 nRet = nMask; 521cdf0e10cSrcweir sal_Bool bModified = pDoc->IsModified(); 522cdf0e10cSrcweir 523cdf0e10cSrcweir if( bNew ) 524cdf0e10cSrcweir { 525cdf0e10cSrcweir if( SFXSTYLEBIT_ALL != nMask && SFXSTYLEBIT_USED != nMask ) 526cdf0e10cSrcweir nMask |= SFXSTYLEBIT_USERDEF; 527cdf0e10cSrcweir else 528cdf0e10cSrcweir nMask = SFXSTYLEBIT_USERDEF; 529cdf0e10cSrcweir 530cdf0e10cSrcweir pStyle = &mxBasePool->Make( rName, (SfxStyleFamily)nFamily, nMask ); 531cdf0e10cSrcweir 532cdf0e10cSrcweir // die aktuellen als Parent setzen 533cdf0e10cSrcweir SwDocStyleSheet* pDStyle = (SwDocStyleSheet*)pStyle; 534cdf0e10cSrcweir switch( nFamily ) 535cdf0e10cSrcweir { 536cdf0e10cSrcweir case SFX_STYLE_FAMILY_PARA: 537cdf0e10cSrcweir { 538cdf0e10cSrcweir if(rParent.Len()) 539cdf0e10cSrcweir { 540cdf0e10cSrcweir SwTxtFmtColl* pColl = pWrtShell->FindTxtFmtCollByName( rParent ); 541cdf0e10cSrcweir if(!pColl) 542cdf0e10cSrcweir { 543cdf0e10cSrcweir sal_uInt16 nId = SwStyleNameMapper::GetPoolIdFromUIName(rParent, nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL); 544cdf0e10cSrcweir if(USHRT_MAX != nId) 545cdf0e10cSrcweir pColl = pWrtShell->GetTxtCollFromPool( nId ); 546cdf0e10cSrcweir } 547cdf0e10cSrcweir pDStyle->GetCollection()->SetDerivedFrom( pColl ); 548cdf0e10cSrcweir pDStyle->PresetParent( rParent ); 549cdf0e10cSrcweir 550cdf0e10cSrcweir //#outline level,add by zhaojianwei 551cdf0e10cSrcweir /*When a new paragraph style is created based on a "to outline style 552cdf0e10cSrcweir assigned" paragraph style, the outline level attribute and the list 553cdf0e10cSrcweir style attribute of the new paragraph style have to be set to 0 554cdf0e10cSrcweir respectively "".*/ 555cdf0e10cSrcweir if( pColl->IsAssignedToListLevelOfOutlineStyle()) 556cdf0e10cSrcweir { 557cdf0e10cSrcweir SwNumRuleItem aItem(aEmptyStr); 558cdf0e10cSrcweir pDStyle->GetCollection()->SetFmtAttr( aItem ); 559cdf0e10cSrcweir pDStyle->GetCollection()->SetAttrOutlineLevel( 0 ); 560cdf0e10cSrcweir } 561cdf0e10cSrcweir //<-end,zhaojianwei 562cdf0e10cSrcweir 563cdf0e10cSrcweir } 564cdf0e10cSrcweir else 565cdf0e10cSrcweir { 566cdf0e10cSrcweir SwTxtFmtColl* pColl = pWrtShell->GetCurTxtFmtColl(); 567cdf0e10cSrcweir pDStyle->GetCollection()->SetDerivedFrom( pColl ); 568cdf0e10cSrcweir if( pColl ) 569cdf0e10cSrcweir pDStyle->PresetParent( pColl->GetName() ); 570cdf0e10cSrcweir } 571cdf0e10cSrcweir } 572cdf0e10cSrcweir break; 573cdf0e10cSrcweir case SFX_STYLE_FAMILY_CHAR: 574cdf0e10cSrcweir { 575cdf0e10cSrcweir if(rParent.Len()) 576cdf0e10cSrcweir { 577cdf0e10cSrcweir SwCharFmt* pCFmt = pWrtShell->FindCharFmtByName( rParent ); 578cdf0e10cSrcweir if(!pCFmt) 579cdf0e10cSrcweir { 580cdf0e10cSrcweir sal_uInt16 nId = SwStyleNameMapper::GetPoolIdFromUIName(rParent, nsSwGetPoolIdFromName::GET_POOLID_CHRFMT); 581cdf0e10cSrcweir if(USHRT_MAX != nId) 582cdf0e10cSrcweir pCFmt = pWrtShell->GetCharFmtFromPool( nId ); 583cdf0e10cSrcweir } 584cdf0e10cSrcweir 585cdf0e10cSrcweir pDStyle->GetCharFmt()->SetDerivedFrom( pCFmt ); 586cdf0e10cSrcweir pDStyle->PresetParent( rParent ); 587cdf0e10cSrcweir } 588cdf0e10cSrcweir else 589cdf0e10cSrcweir { 590cdf0e10cSrcweir SwCharFmt* pCFmt = pWrtShell->GetCurCharFmt(); 591cdf0e10cSrcweir pDStyle->GetCharFmt()->SetDerivedFrom( pCFmt ); 592cdf0e10cSrcweir if( pCFmt ) 593cdf0e10cSrcweir pDStyle->PresetParent( pCFmt->GetName() ); 594cdf0e10cSrcweir } 595cdf0e10cSrcweir } 596cdf0e10cSrcweir break; 597cdf0e10cSrcweir case SFX_STYLE_FAMILY_FRAME : 598cdf0e10cSrcweir { 599cdf0e10cSrcweir if(rParent.Len()) 600cdf0e10cSrcweir { 601cdf0e10cSrcweir SwFrmFmt* pFFmt = pWrtShell->GetDoc()->FindFrmFmtByName( rParent ); 602cdf0e10cSrcweir if(!pFFmt) 603cdf0e10cSrcweir { 604cdf0e10cSrcweir sal_uInt16 nId = SwStyleNameMapper::GetPoolIdFromUIName(rParent, nsSwGetPoolIdFromName::GET_POOLID_FRMFMT); 605cdf0e10cSrcweir if(USHRT_MAX != nId) 606cdf0e10cSrcweir pFFmt = pWrtShell->GetFrmFmtFromPool( nId ); 607cdf0e10cSrcweir } 608cdf0e10cSrcweir pDStyle->GetFrmFmt()->SetDerivedFrom( pFFmt ); 609cdf0e10cSrcweir pDStyle->PresetParent( rParent ); 610cdf0e10cSrcweir } 611cdf0e10cSrcweir } 612cdf0e10cSrcweir break; 613cdf0e10cSrcweir } 614cdf0e10cSrcweir } 615cdf0e10cSrcweir else 616cdf0e10cSrcweir { 617cdf0e10cSrcweir pStyle = mxBasePool->Find( rName, (SfxStyleFamily)nFamily ); 618cdf0e10cSrcweir ASSERT(pStyle, "Vorlage nicht gefunden"); 619cdf0e10cSrcweir } 620cdf0e10cSrcweir 621cdf0e10cSrcweir if(!pStyle) 622cdf0e10cSrcweir return sal_False; 623cdf0e10cSrcweir 624cdf0e10cSrcweir // Dialoge zusammenstoepseln 625cdf0e10cSrcweir // 626cdf0e10cSrcweir rtl::Reference< SwDocStyleSheet > xTmp( new SwDocStyleSheet( *(SwDocStyleSheet*)pStyle ) ); 627cdf0e10cSrcweir if( SFX_STYLE_FAMILY_PARA == nFamily ) 628cdf0e10cSrcweir { 629cdf0e10cSrcweir SfxItemSet& rSet = xTmp->GetItemSet(); 630cdf0e10cSrcweir ::SwToSfxPageDescAttr( rSet ); 631cdf0e10cSrcweir // erstmal nur eine Null 632cdf0e10cSrcweir rSet.Put(SwBackgroundDestinationItem(SID_PARA_BACKGRND_DESTINATION, 0)); 633cdf0e10cSrcweir // --> OD 2008-02-13 #newlistlevelattrs# 634cdf0e10cSrcweir // merge list level indent attributes into the item set if needed 635cdf0e10cSrcweir xTmp->MergeIndentAttrsOfListStyle( rSet ); 636cdf0e10cSrcweir // <-- 637cdf0e10cSrcweir } 638cdf0e10cSrcweir /* else if( SFX_STYLE_FAMILY_FRAME == nFamily ) 639cdf0e10cSrcweir { 640cdf0e10cSrcweir // Auskommentiert wegen Bug #45776 (per default keine Breite&Groesse in Rahmenvorlagen) 641cdf0e10cSrcweir SfxItemSet& rSet = aTmp.GetItemSet(); 642cdf0e10cSrcweir if( SFX_ITEM_SET != rSet.GetItemState( RES_FRM_SIZE )) 643cdf0e10cSrcweir { 644cdf0e10cSrcweir // dann sollten wir spaetesten hier eines anlegen 645cdf0e10cSrcweir SwFrmValid aFrmDefValues; 646cdf0e10cSrcweir rSet.Put( SwFmtFrmSize( ATT_VAR_SIZE, aFrmDefValues.nWidth, 647cdf0e10cSrcweir aFrmDefValues.nHeight )); 648cdf0e10cSrcweir } 649cdf0e10cSrcweir }*/ 650cdf0e10cSrcweir else if( SFX_STYLE_FAMILY_CHAR == nFamily ) 651cdf0e10cSrcweir { 652cdf0e10cSrcweir SfxItemSet& rSet = xTmp->GetItemSet(); 653cdf0e10cSrcweir const SfxPoolItem *pTmpBrush; 654cdf0e10cSrcweir if( SFX_ITEM_SET == rSet.GetItemState( RES_CHRATR_BACKGROUND, 655cdf0e10cSrcweir sal_True, &pTmpBrush ) ) 656cdf0e10cSrcweir { 657cdf0e10cSrcweir SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); 658cdf0e10cSrcweir aTmpBrush.SetWhich( RES_BACKGROUND ); 659cdf0e10cSrcweir rSet.Put( aTmpBrush ); 660cdf0e10cSrcweir } 661cdf0e10cSrcweir } 66256b35d86SArmin Le Grand 66356b35d86SArmin Le Grand if(SFX_STYLE_FAMILY_PAGE == nFamily || SFX_STYLE_FAMILY_PARA == nFamily) 66456b35d86SArmin Le Grand { 66556b35d86SArmin Le Grand //UUUU create needed items for XPropertyList entries from the DrawModel so that 66656b35d86SArmin Le Grand // the Area TabPage can access them 66756b35d86SArmin Le Grand SfxItemSet& rSet = xTmp->GetItemSet(); 668*26ea3662SArmin Le Grand const SwDrawModel* pDrawModel = GetDoc()->GetDrawModel(); 66956b35d86SArmin Le Grand 67056b35d86SArmin Le Grand rSet.Put(SvxColorTableItem(pDrawModel->GetColorTableFromSdrModel(), SID_COLOR_TABLE)); 67156b35d86SArmin Le Grand rSet.Put(SvxGradientListItem(pDrawModel->GetGradientListFromSdrModel(), SID_GRADIENT_LIST)); 67256b35d86SArmin Le Grand rSet.Put(SvxHatchListItem(pDrawModel->GetHatchListFromSdrModel(), SID_HATCH_LIST)); 67356b35d86SArmin Le Grand rSet.Put(SvxBitmapListItem(pDrawModel->GetBitmapListFromSdrModel(), SID_BITMAP_LIST)); 67456b35d86SArmin Le Grand } 67556b35d86SArmin Le Grand 676cdf0e10cSrcweir if (!bBasic) 677cdf0e10cSrcweir { 678cdf0e10cSrcweir // vor dem Dialog wird der HtmlMode an der DocShell versenkt 679cdf0e10cSrcweir sal_uInt16 nHtmlMode = ::GetHtmlMode(this); 680cdf0e10cSrcweir 681cdf0e10cSrcweir // In HTML mode, we do not always have a printer. In order to show 682cdf0e10cSrcweir // the correct page size in the Format - Page dialog, we have to 683cdf0e10cSrcweir // get one here. 684cdf0e10cSrcweir SwWrtShell* pCurrShell = ( pActShell ? pActShell : pWrtShell ); 685cdf0e10cSrcweir if( ( HTMLMODE_ON & nHtmlMode ) && 686cdf0e10cSrcweir !pCurrShell->getIDocumentDeviceAccess()->getPrinter( false ) ) 687cdf0e10cSrcweir pCurrShell->InitPrt( pCurrShell->getIDocumentDeviceAccess()->getPrinter( true ) ); 688cdf0e10cSrcweir 689cdf0e10cSrcweir PutItem(SfxUInt16Item(SID_HTML_MODE, nHtmlMode)); 690cdf0e10cSrcweir FieldUnit eMetric = ::GetDfltMetric(0 != (HTMLMODE_ON&nHtmlMode)); 691cdf0e10cSrcweir SW_MOD()->PutItem(SfxUInt16Item(SID_ATTR_METRIC, static_cast< sal_uInt16 >(eMetric))); 692cdf0e10cSrcweir SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); 693cdf0e10cSrcweir DBG_ASSERT(pFact, "Dialogdiet fail!"); 694cdf0e10cSrcweir SfxAbstractTabDialog* pDlg = pFact->CreateTemplateDialog( DLG_TEMPLATE_BASE, 695ff0525f2SOliver-Rainer Wittmann 0, *(xTmp.get()), nFamily, nSlot, 696cdf0e10cSrcweir pActShell ? pActShell : pWrtShell, bNew); 697cdf0e10cSrcweir DBG_ASSERT(pDlg, "Dialogdiet fail!"); 698cdf0e10cSrcweir if(RET_OK == pDlg->Execute()) 699cdf0e10cSrcweir { 700cdf0e10cSrcweir GetWrtShell()->StartAllAction(); 701cdf0e10cSrcweir 702cdf0e10cSrcweir // nur bei Absatz-Vorlagen die Maske neu setzen 703cdf0e10cSrcweir if( bNew ) 704cdf0e10cSrcweir { 705cdf0e10cSrcweir nRet = SFX_STYLE_FAMILY_PARA == pStyle->GetFamily() 706cdf0e10cSrcweir ? xTmp->GetMask() 707cdf0e10cSrcweir : SFXSTYLEBIT_USERDEF; 708cdf0e10cSrcweir } 709cdf0e10cSrcweir else if( pStyle->GetMask() != xTmp->GetMask() ) 710cdf0e10cSrcweir nRet = xTmp->GetMask(); 711cdf0e10cSrcweir 712cdf0e10cSrcweir if( SFX_STYLE_FAMILY_PARA == nFamily ) 713cdf0e10cSrcweir { 714cdf0e10cSrcweir SfxItemSet aSet( *pDlg->GetOutputItemSet() ); 715cdf0e10cSrcweir ::SfxToSwPageDescAttr( *GetWrtShell(), aSet ); 716cdf0e10cSrcweir // --> OD 2008-02-12 #newlistlevelattrs# 717cdf0e10cSrcweir // reset indent attributes at paragraph style, if a list style 718cdf0e10cSrcweir // will be applied and no indent attributes will be applied. 719cdf0e10cSrcweir xTmp->SetItemSet( aSet, true ); 720cdf0e10cSrcweir // <-- 721cdf0e10cSrcweir } 722cdf0e10cSrcweir else 723cdf0e10cSrcweir { 724cdf0e10cSrcweir if(SFX_STYLE_FAMILY_PAGE == nFamily) 725cdf0e10cSrcweir { 726cdf0e10cSrcweir static const sal_uInt16 aInval[] = { 727cdf0e10cSrcweir SID_IMAGE_ORIENTATION, 728cdf0e10cSrcweir SID_ATTR_CHAR_FONT, 729cdf0e10cSrcweir FN_INSERT_CTRL, FN_INSERT_OBJ_CTRL, 0}; 730cdf0e10cSrcweir pView->GetViewFrame()->GetBindings().Invalidate(aInval); 731cdf0e10cSrcweir } 732cdf0e10cSrcweir SfxItemSet aTmpSet( *pDlg->GetOutputItemSet() ); 733cdf0e10cSrcweir if( SFX_STYLE_FAMILY_CHAR == nFamily ) 734cdf0e10cSrcweir { 735cdf0e10cSrcweir const SfxPoolItem *pTmpBrush; 736cdf0e10cSrcweir if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BACKGROUND, 737cdf0e10cSrcweir sal_False, &pTmpBrush ) ) 738cdf0e10cSrcweir { 739cdf0e10cSrcweir SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); 740cdf0e10cSrcweir aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND ); 741cdf0e10cSrcweir aTmpSet.Put( aTmpBrush ); 742cdf0e10cSrcweir } 743cdf0e10cSrcweir aTmpSet.ClearItem( RES_BACKGROUND ); 744cdf0e10cSrcweir } 74564b14621SArmin Le Grand 746cdf0e10cSrcweir xTmp->SetItemSet( aTmpSet ); 747cdf0e10cSrcweir 748cdf0e10cSrcweir if( SFX_STYLE_FAMILY_PAGE == nFamily && SvtLanguageOptions().IsCTLFontEnabled() ) 749cdf0e10cSrcweir { 750cdf0e10cSrcweir const SfxPoolItem *pItem = NULL; 751cdf0e10cSrcweir if( aTmpSet.GetItemState( GetPool().GetTrueWhich( SID_ATTR_FRAMEDIRECTION, sal_False ) , sal_True, &pItem ) == SFX_ITEM_SET ) 752cdf0e10cSrcweir SwChartHelper::DoUpdateAllCharts( pDoc ); 753cdf0e10cSrcweir } 754cdf0e10cSrcweir } 75556b35d86SArmin Le Grand 75656b35d86SArmin Le Grand //UUUU 75756b35d86SArmin Le Grand if(bNew) 75856b35d86SArmin Le Grand { 75956b35d86SArmin Le Grand if(SFX_STYLE_FAMILY_FRAME == nFamily || SFX_STYLE_FAMILY_PARA == nFamily) 76056b35d86SArmin Le Grand { 76156b35d86SArmin Le Grand // clear FillStyle so that it works as a derived attribute 76256b35d86SArmin Le Grand SfxItemSet aTmpSet(*pDlg->GetOutputItemSet()); 76356b35d86SArmin Le Grand 76456b35d86SArmin Le Grand aTmpSet.ClearItem(XATTR_FILLSTYLE); 76556b35d86SArmin Le Grand xTmp->SetItemSet(aTmpSet); 76656b35d86SArmin Le Grand } 76756b35d86SArmin Le Grand } 76856b35d86SArmin Le Grand 769cdf0e10cSrcweir if(SFX_STYLE_FAMILY_PAGE == nFamily) 770cdf0e10cSrcweir pView->InvalidateRulerPos(); 771cdf0e10cSrcweir 772cdf0e10cSrcweir if( bNew ) 773cdf0e10cSrcweir mxBasePool->Broadcast( SfxStyleSheetHint( SFX_STYLESHEET_CREATED, *xTmp.get() ) ); 774cdf0e10cSrcweir 775cdf0e10cSrcweir // JP 19.09.97: 776cdf0e10cSrcweir // Dialog vorm EndAction zerstoeren - bei Seitenvorlagen kann 777cdf0e10cSrcweir // muss der ItemSet zerstoert werden, damit die Cursor aus den 778cdf0e10cSrcweir // Kopf-/Fusszeilen entfernt werden. Sonst kommts zu GPFs!!! 779cdf0e10cSrcweir delete pDlg; 780cdf0e10cSrcweir 781cdf0e10cSrcweir pDoc->SetModified(); 782cdf0e10cSrcweir if( !bModified ) // Bug 57028 783cdf0e10cSrcweir { 784cdf0e10cSrcweir pDoc->GetIDocumentUndoRedo().SetUndoNoResetModified(); 785cdf0e10cSrcweir } 786cdf0e10cSrcweir 787cdf0e10cSrcweir GetWrtShell()->EndAllAction(); 788cdf0e10cSrcweir } 789cdf0e10cSrcweir else 790cdf0e10cSrcweir { 791cdf0e10cSrcweir if( bNew ) 792cdf0e10cSrcweir { 793cdf0e10cSrcweir // #116530# 794cdf0e10cSrcweir //pBasePool->Erase( &aTmp ); 795cdf0e10cSrcweir GetWrtShell()->Undo(1); 796cdf0e10cSrcweir pDoc->GetIDocumentUndoRedo().ClearRedo(); 797cdf0e10cSrcweir } 798cdf0e10cSrcweir 799cdf0e10cSrcweir if( !bModified ) 800cdf0e10cSrcweir pDoc->ResetModified(); 801cdf0e10cSrcweir delete pDlg; 802cdf0e10cSrcweir } 803cdf0e10cSrcweir } 804cdf0e10cSrcweir else 805cdf0e10cSrcweir { 806cdf0e10cSrcweir // vor dem Dialog wird der HtmlMode an der DocShell versenkt 807cdf0e10cSrcweir PutItem(SfxUInt16Item(SID_HTML_MODE, ::GetHtmlMode(this))); 808cdf0e10cSrcweir 809cdf0e10cSrcweir GetWrtShell()->StartAllAction(); 810cdf0e10cSrcweir 811cdf0e10cSrcweir // nur bei Absatz-Vorlagen die Maske neu setzen 812cdf0e10cSrcweir if( bNew ) 813cdf0e10cSrcweir { 814cdf0e10cSrcweir nRet = SFX_STYLE_FAMILY_PARA == pStyle->GetFamily() 815cdf0e10cSrcweir ? xTmp->GetMask() 816cdf0e10cSrcweir : SFXSTYLEBIT_USERDEF; 817cdf0e10cSrcweir } 818cdf0e10cSrcweir else if( pStyle->GetMask() != xTmp->GetMask() ) 819cdf0e10cSrcweir nRet = xTmp->GetMask(); 820cdf0e10cSrcweir 821cdf0e10cSrcweir if( SFX_STYLE_FAMILY_PARA == nFamily ) 822cdf0e10cSrcweir ::SfxToSwPageDescAttr( *GetWrtShell(), xTmp->GetItemSet() ); 823cdf0e10cSrcweir else 824cdf0e10cSrcweir { 825cdf0e10cSrcweir SfxItemSet aTmpSet( xTmp->GetItemSet() ); 826cdf0e10cSrcweir if( SFX_STYLE_FAMILY_CHAR == nFamily ) 827cdf0e10cSrcweir { 828cdf0e10cSrcweir const SfxPoolItem *pTmpBrush; 829cdf0e10cSrcweir if( SFX_ITEM_SET == aTmpSet.GetItemState( RES_BACKGROUND, 830cdf0e10cSrcweir sal_False, &pTmpBrush ) ) 831cdf0e10cSrcweir { 832cdf0e10cSrcweir SvxBrushItem aTmpBrush( *((SvxBrushItem*)pTmpBrush) ); 833cdf0e10cSrcweir aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND ); 834cdf0e10cSrcweir aTmpSet.Put( aTmpBrush ); 835cdf0e10cSrcweir } 836cdf0e10cSrcweir aTmpSet.ClearItem( RES_BACKGROUND ); 837cdf0e10cSrcweir } 838cdf0e10cSrcweir xTmp->SetItemSet( aTmpSet ); 839cdf0e10cSrcweir } 840cdf0e10cSrcweir if(SFX_STYLE_FAMILY_PAGE == nFamily) 841cdf0e10cSrcweir pView->InvalidateRulerPos(); 842cdf0e10cSrcweir 843cdf0e10cSrcweir if( bNew ) 844cdf0e10cSrcweir mxBasePool->Broadcast( SfxStyleSheetHint( SFX_STYLESHEET_CREATED, *xTmp.get() ) ); 845cdf0e10cSrcweir 846cdf0e10cSrcweir pDoc->SetModified(); 847cdf0e10cSrcweir if( !bModified ) // Bug 57028 848cdf0e10cSrcweir { 849cdf0e10cSrcweir pDoc->GetIDocumentUndoRedo().SetUndoNoResetModified(); 850cdf0e10cSrcweir } 851cdf0e10cSrcweir GetWrtShell()->EndAllAction(); 852cdf0e10cSrcweir } 853cdf0e10cSrcweir 854cdf0e10cSrcweir return nRet; 855cdf0e10cSrcweir } 856cdf0e10cSrcweir 857cdf0e10cSrcweir /*-------------------------------------------------------------------- 858cdf0e10cSrcweir Beschreibung: Delete 859cdf0e10cSrcweir --------------------------------------------------------------------*/ 860cdf0e10cSrcweir 861cdf0e10cSrcweir 862cdf0e10cSrcweir sal_uInt16 SwDocShell::Delete(const String &rName, sal_uInt16 nFamily) 863cdf0e10cSrcweir { 864cdf0e10cSrcweir SfxStyleSheetBase *pStyle = mxBasePool->Find(rName, (SfxStyleFamily)nFamily); 865cdf0e10cSrcweir 866cdf0e10cSrcweir if(pStyle) 867cdf0e10cSrcweir { 868cdf0e10cSrcweir ASSERT(GetWrtShell(), "Keine Shell, keine Styles"); 869cdf0e10cSrcweir 870cdf0e10cSrcweir GetWrtShell()->StartAllAction(); 871cdf0e10cSrcweir mxBasePool->Remove(pStyle); 872cdf0e10cSrcweir GetWrtShell()->EndAllAction(); 873cdf0e10cSrcweir 874cdf0e10cSrcweir return sal_True; 875cdf0e10cSrcweir } 876cdf0e10cSrcweir return sal_False; 877cdf0e10cSrcweir } 878cdf0e10cSrcweir 879cdf0e10cSrcweir /*-------------------------------------------------------------------- 880cdf0e10cSrcweir Beschreibung: Vorlage anwenden 881cdf0e10cSrcweir --------------------------------------------------------------------*/ 882cdf0e10cSrcweir 883cdf0e10cSrcweir 88434760e49SOliver-Rainer Wittmann sal_uInt16 SwDocShell::ApplyStyles( 88534760e49SOliver-Rainer Wittmann const String &rName, 88634760e49SOliver-Rainer Wittmann const sal_uInt16 nFamily, 88734760e49SOliver-Rainer Wittmann SwWrtShell* pShell, 88834760e49SOliver-Rainer Wittmann const sal_uInt16 nMode ) 889cdf0e10cSrcweir { 89034760e49SOliver-Rainer Wittmann SwDocStyleSheet* pStyle = (SwDocStyleSheet*) mxBasePool->Find( rName, (SfxStyleFamily) nFamily ); 891cdf0e10cSrcweir 892cdf0e10cSrcweir ASSERT( pStyle, "Wo ist der StyleSheet" ); 893cdf0e10cSrcweir if ( !pStyle ) 894cdf0e10cSrcweir return sal_False; 895cdf0e10cSrcweir 896cdf0e10cSrcweir SwWrtShell *pSh = pShell ? pShell : GetWrtShell(); 897cdf0e10cSrcweir 898cdf0e10cSrcweir ASSERT( pSh, "Keine Shell, keine Styles" ); 899cdf0e10cSrcweir 900cdf0e10cSrcweir pSh->StartAllAction(); 901cdf0e10cSrcweir 902cdf0e10cSrcweir switch (nFamily) 903cdf0e10cSrcweir { 904cdf0e10cSrcweir case SFX_STYLE_FAMILY_CHAR: 905cdf0e10cSrcweir { 906cdf0e10cSrcweir SwFmtCharFmt aFmt( pStyle->GetCharFmt() ); 90734760e49SOliver-Rainer Wittmann pSh->SetAttrItem( aFmt, ( nMode & KEY_SHIFT ) ? nsSetAttrMode::SETATTR_DONTREPLACE : nsSetAttrMode::SETATTR_DEFAULT ); 908cdf0e10cSrcweir break; 909cdf0e10cSrcweir } 910cdf0e10cSrcweir case SFX_STYLE_FAMILY_PARA: 911cdf0e10cSrcweir { 912cdf0e10cSrcweir // --> OD 2007-11-06 #i62675# 913cdf0e10cSrcweir // clear also list attributes at affected text nodes, if paragraph 914cdf0e10cSrcweir // style has the list style attribute set. 915cdf0e10cSrcweir pSh->SetTxtFmtColl( pStyle->GetCollection(), true ); 916cdf0e10cSrcweir // <-- 917cdf0e10cSrcweir break; 918cdf0e10cSrcweir } 919cdf0e10cSrcweir case SFX_STYLE_FAMILY_FRAME: 920cdf0e10cSrcweir { 921cdf0e10cSrcweir if ( pSh->IsFrmSelected() ) 922cdf0e10cSrcweir pSh->SetFrmFmt( pStyle->GetFrmFmt() ); 923cdf0e10cSrcweir break; 924cdf0e10cSrcweir } 925cdf0e10cSrcweir case SFX_STYLE_FAMILY_PAGE: 926cdf0e10cSrcweir { 927cdf0e10cSrcweir pSh->SetPageStyle( pStyle->GetPageDesc()->GetName() ); 928cdf0e10cSrcweir break; 929cdf0e10cSrcweir } 93034760e49SOliver-Rainer Wittmann 931cdf0e10cSrcweir case SFX_STYLE_FAMILY_PSEUDO: 932cdf0e10cSrcweir { 933cdf0e10cSrcweir // --> OD 2008-02-08 #newlistlevelattrs# 934cdf0e10cSrcweir // reset indent attribute on applying list style 935cdf0e10cSrcweir // --> OD 2008-03-17 #refactorlists# 936cdf0e10cSrcweir // continue list of list style 937cdf0e10cSrcweir const SwNumRule* pNumRule = pStyle->GetNumRule(); 938cdf0e10cSrcweir const String sListIdForStyle = pNumRule->GetDefaultListId(); 939cdf0e10cSrcweir pSh->SetCurNumRule( *pNumRule, false, sListIdForStyle, true ); 940cdf0e10cSrcweir // <-- 941cdf0e10cSrcweir break; 942cdf0e10cSrcweir } 94334760e49SOliver-Rainer Wittmann 944cdf0e10cSrcweir default: 945cdf0e10cSrcweir DBG_ERROR( "Unbekannte Familie" ); 946cdf0e10cSrcweir } 947cdf0e10cSrcweir pSh->EndAllAction(); 948cdf0e10cSrcweir 949cdf0e10cSrcweir return nFamily; 950cdf0e10cSrcweir } 951cdf0e10cSrcweir 952cdf0e10cSrcweir /*-------------------------------------------------------------------- 953cdf0e10cSrcweir Beschreibung: Giesskanne starten 954cdf0e10cSrcweir --------------------------------------------------------------------*/ 955cdf0e10cSrcweir 956cdf0e10cSrcweir 957cdf0e10cSrcweir 958cdf0e10cSrcweir sal_uInt16 SwDocShell::DoWaterCan(const String &rName, sal_uInt16 nFamily) 959cdf0e10cSrcweir { 960cdf0e10cSrcweir ASSERT(GetWrtShell(), "Keine Shell, keine Styles"); 961cdf0e10cSrcweir 962cdf0e10cSrcweir SwEditWin& rEdtWin = pView->GetEditWin(); 963cdf0e10cSrcweir SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate(); 964cdf0e10cSrcweir sal_Bool bWaterCan = !(pApply && pApply->eType != 0); 965cdf0e10cSrcweir if( !rName.Len() ) 966cdf0e10cSrcweir bWaterCan = sal_False; 967cdf0e10cSrcweir SwApplyTemplate aTemplate; 968cdf0e10cSrcweir aTemplate.eType = nFamily; 969cdf0e10cSrcweir 970cdf0e10cSrcweir if(bWaterCan) 971cdf0e10cSrcweir { 972cdf0e10cSrcweir SwDocStyleSheet* pStyle = 973cdf0e10cSrcweir (SwDocStyleSheet*)mxBasePool->Find(rName, (SfxStyleFamily)nFamily); 974cdf0e10cSrcweir 975cdf0e10cSrcweir ASSERT(pStyle, "Wo ist der StyleSheet"); 976cdf0e10cSrcweir if(!pStyle) return nFamily; 977cdf0e10cSrcweir 978cdf0e10cSrcweir switch(nFamily) 979cdf0e10cSrcweir { 980cdf0e10cSrcweir case SFX_STYLE_FAMILY_CHAR: 981cdf0e10cSrcweir aTemplate.aColl.pCharFmt = pStyle->GetCharFmt(); 982cdf0e10cSrcweir break; 983cdf0e10cSrcweir case SFX_STYLE_FAMILY_PARA: 984cdf0e10cSrcweir aTemplate.aColl.pTxtColl = pStyle->GetCollection(); 985cdf0e10cSrcweir break; 986cdf0e10cSrcweir case SFX_STYLE_FAMILY_FRAME: 987cdf0e10cSrcweir aTemplate.aColl.pFrmFmt = pStyle->GetFrmFmt(); 988cdf0e10cSrcweir break; 989cdf0e10cSrcweir case SFX_STYLE_FAMILY_PAGE: 990cdf0e10cSrcweir aTemplate.aColl.pPageDesc = (SwPageDesc*)pStyle->GetPageDesc(); 991cdf0e10cSrcweir break; 992cdf0e10cSrcweir case SFX_STYLE_FAMILY_PSEUDO: 993cdf0e10cSrcweir aTemplate.aColl.pNumRule = (SwNumRule*)pStyle->GetNumRule(); 994cdf0e10cSrcweir break; 995cdf0e10cSrcweir 996cdf0e10cSrcweir default: 997cdf0e10cSrcweir DBG_ERROR( "Unbekannte Familie"); 998cdf0e10cSrcweir } 999cdf0e10cSrcweir } 1000cdf0e10cSrcweir else 1001cdf0e10cSrcweir aTemplate.eType = 0; 1002cdf0e10cSrcweir 1003cdf0e10cSrcweir // Template anwenden 1004cdf0e10cSrcweir pView->GetEditWin().SetApplyTemplate(aTemplate); 1005cdf0e10cSrcweir 1006cdf0e10cSrcweir return nFamily; 1007cdf0e10cSrcweir } 1008cdf0e10cSrcweir 1009cdf0e10cSrcweir /*-------------------------------------------------------------------- 1010cdf0e10cSrcweir Beschreibung: Vorlage Updaten 1011cdf0e10cSrcweir --------------------------------------------------------------------*/ 1012cdf0e10cSrcweir 1013cdf0e10cSrcweir 1014cdf0e10cSrcweir sal_uInt16 SwDocShell::UpdateStyle(const String &rName, sal_uInt16 nFamily, SwWrtShell* pShell) 1015cdf0e10cSrcweir { 1016cdf0e10cSrcweir SwWrtShell* pCurrWrtShell = pShell ? pShell : GetWrtShell(); 1017cdf0e10cSrcweir ASSERT(GetWrtShell(), "Keine Shell, keine Styles"); 1018cdf0e10cSrcweir 1019cdf0e10cSrcweir SwDocStyleSheet* pStyle = 1020cdf0e10cSrcweir (SwDocStyleSheet*)mxBasePool->Find(rName, (SfxStyleFamily)nFamily); 1021cdf0e10cSrcweir 1022cdf0e10cSrcweir if(!pStyle) 1023cdf0e10cSrcweir return nFamily; 1024cdf0e10cSrcweir 1025cdf0e10cSrcweir switch(nFamily) 1026cdf0e10cSrcweir { 1027cdf0e10cSrcweir case SFX_STYLE_FAMILY_PARA: 1028cdf0e10cSrcweir { 1029cdf0e10cSrcweir SwTxtFmtColl* pColl = pStyle->GetCollection(); 1030cdf0e10cSrcweir if(pColl && !pColl->IsDefault()) 1031cdf0e10cSrcweir { 1032cdf0e10cSrcweir GetWrtShell()->StartAllAction(); 1033cdf0e10cSrcweir 1034cdf0e10cSrcweir SwRewriter aRewriter; 1035cdf0e10cSrcweir aRewriter.AddRule(UNDO_ARG1, pColl->GetName()); 1036cdf0e10cSrcweir 1037cdf0e10cSrcweir GetWrtShell()->StartUndo(UNDO_INSFMTATTR, &aRewriter); 1038cdf0e10cSrcweir GetWrtShell()->FillByEx(pColl); 1039cdf0e10cSrcweir // Vorlage auch anwenden, um harte Attributierung 1040cdf0e10cSrcweir // zu entfernen 1041cdf0e10cSrcweir GetWrtShell()->SetTxtFmtColl( pColl ); 1042cdf0e10cSrcweir GetWrtShell()->EndUndo(); 1043cdf0e10cSrcweir GetWrtShell()->EndAllAction(); 1044cdf0e10cSrcweir } 1045cdf0e10cSrcweir break; 1046cdf0e10cSrcweir } 1047cdf0e10cSrcweir case SFX_STYLE_FAMILY_FRAME: 1048cdf0e10cSrcweir { 1049cdf0e10cSrcweir SwFrmFmt* pFrm = pStyle->GetFrmFmt(); 1050cdf0e10cSrcweir if( pCurrWrtShell->IsFrmSelected() && pFrm && !pFrm->IsDefault() ) 1051cdf0e10cSrcweir { 1052cdf0e10cSrcweir SfxItemSet aSet( GetPool(), aFrmFmtSetRange ); 1053cdf0e10cSrcweir pCurrWrtShell->StartAllAction(); 1054cdf0e10cSrcweir pCurrWrtShell->GetFlyFrmAttr( aSet ); 1055cdf0e10cSrcweir 1056cdf0e10cSrcweir // --> OD 2009-12-28 #i105535# 1057cdf0e10cSrcweir // no update of anchor attribute 1058cdf0e10cSrcweir aSet.ClearItem( RES_ANCHOR ); 1059cdf0e10cSrcweir // <-- 1060cdf0e10cSrcweir 1061cdf0e10cSrcweir pFrm->SetFmtAttr( aSet ); 1062cdf0e10cSrcweir 1063cdf0e10cSrcweir // Vorlage auch anwenden, um harte Attributierung 1064cdf0e10cSrcweir // zu entfernen 1065cdf0e10cSrcweir pCurrWrtShell->SetFrmFmt( pFrm, sal_True ); 1066cdf0e10cSrcweir pCurrWrtShell->EndAllAction(); 1067cdf0e10cSrcweir } 1068cdf0e10cSrcweir } 1069cdf0e10cSrcweir break; 1070cdf0e10cSrcweir case SFX_STYLE_FAMILY_CHAR: 1071cdf0e10cSrcweir { 1072cdf0e10cSrcweir SwCharFmt* pChar = pStyle->GetCharFmt(); 1073cdf0e10cSrcweir if( pChar && !pChar->IsDefault() ) 1074cdf0e10cSrcweir { 1075cdf0e10cSrcweir pCurrWrtShell->StartAllAction(); 1076cdf0e10cSrcweir pCurrWrtShell->FillByEx(pChar); 1077cdf0e10cSrcweir // Vorlage auch anwenden, um harte Attributierung 1078cdf0e10cSrcweir // zu entfernen 1079cdf0e10cSrcweir pCurrWrtShell->EndAllAction(); 1080cdf0e10cSrcweir } 1081cdf0e10cSrcweir 1082cdf0e10cSrcweir } 1083cdf0e10cSrcweir break; 1084cdf0e10cSrcweir case SFX_STYLE_FAMILY_PSEUDO: 1085cdf0e10cSrcweir { 1086cdf0e10cSrcweir const SwNumRule* pCurRule; 1087cdf0e10cSrcweir if( pStyle->GetNumRule() && 108834760e49SOliver-Rainer Wittmann 0 != ( pCurRule = pCurrWrtShell->GetNumRuleAtCurrCrsrPos() )) 1089cdf0e10cSrcweir { 1090cdf0e10cSrcweir SwNumRule aRule( *pCurRule ); 1091cdf0e10cSrcweir // --> OD 2008-07-08 #i91400# 1092cdf0e10cSrcweir aRule.SetName( pStyle->GetNumRule()->GetName(), 1093cdf0e10cSrcweir *(pCurrWrtShell->GetDoc()) ); 1094cdf0e10cSrcweir // <-- 1095cdf0e10cSrcweir pCurrWrtShell->ChgNumRuleFmts( aRule ); 1096cdf0e10cSrcweir } 1097cdf0e10cSrcweir } 1098cdf0e10cSrcweir break; 1099cdf0e10cSrcweir } 1100cdf0e10cSrcweir return nFamily; 1101cdf0e10cSrcweir } 1102cdf0e10cSrcweir 1103cdf0e10cSrcweir /*-------------------------------------------------------------------- 1104cdf0e10cSrcweir Beschreibung: NewByExample 1105cdf0e10cSrcweir --------------------------------------------------------------------*/ 1106cdf0e10cSrcweir 1107cdf0e10cSrcweir 1108cdf0e10cSrcweir sal_uInt16 SwDocShell::MakeByExample( const String &rName, sal_uInt16 nFamily, 1109cdf0e10cSrcweir sal_uInt16 nMask, SwWrtShell* pShell ) 1110cdf0e10cSrcweir { 1111cdf0e10cSrcweir SwWrtShell* pCurrWrtShell = pShell ? pShell : GetWrtShell(); 1112cdf0e10cSrcweir SwDocStyleSheet* pStyle = (SwDocStyleSheet*)mxBasePool->Find( 1113cdf0e10cSrcweir rName, (SfxStyleFamily)nFamily ); 1114cdf0e10cSrcweir if(!pStyle) 1115cdf0e10cSrcweir { 1116cdf0e10cSrcweir // JP 07.07.95: behalte die akt. Maske vom PI bei, dadurch werden 1117cdf0e10cSrcweir // neue sofort in den sichtbaren Bereich einsortiert 1118cdf0e10cSrcweir if( SFXSTYLEBIT_ALL == nMask || SFXSTYLEBIT_USED == nMask ) 1119cdf0e10cSrcweir nMask = SFXSTYLEBIT_USERDEF; 1120cdf0e10cSrcweir else 1121cdf0e10cSrcweir nMask |= SFXSTYLEBIT_USERDEF; 1122cdf0e10cSrcweir 1123cdf0e10cSrcweir pStyle = (SwDocStyleSheet*)&mxBasePool->Make(rName, 1124cdf0e10cSrcweir (SfxStyleFamily)nFamily, nMask ); 1125cdf0e10cSrcweir } 1126cdf0e10cSrcweir 1127cdf0e10cSrcweir switch(nFamily) 1128cdf0e10cSrcweir { 1129cdf0e10cSrcweir case SFX_STYLE_FAMILY_PARA: 1130cdf0e10cSrcweir { 1131cdf0e10cSrcweir SwTxtFmtColl* pColl = pStyle->GetCollection(); 1132cdf0e10cSrcweir if(pColl && !pColl->IsDefault()) 1133cdf0e10cSrcweir { 1134cdf0e10cSrcweir pCurrWrtShell->StartAllAction(); 1135cdf0e10cSrcweir pCurrWrtShell->FillByEx(pColl); 1136cdf0e10cSrcweir // Vorlage auch anwenden, um harte Attributierung 1137cdf0e10cSrcweir // zu entfernen 1138cdf0e10cSrcweir pColl->SetDerivedFrom(pCurrWrtShell->GetCurTxtFmtColl()); 1139cdf0e10cSrcweir 1140cdf0e10cSrcweir // setze die Maske noch an der Collection: 1141cdf0e10cSrcweir sal_uInt16 nId = pColl->GetPoolFmtId() & 0x87ff; 1142cdf0e10cSrcweir switch( nMask & 0x0fff ) 1143cdf0e10cSrcweir { 1144cdf0e10cSrcweir case SWSTYLEBIT_TEXT: 1145cdf0e10cSrcweir nId |= COLL_TEXT_BITS; 1146cdf0e10cSrcweir break; 1147cdf0e10cSrcweir case SWSTYLEBIT_CHAPTER: 1148cdf0e10cSrcweir nId |= COLL_DOC_BITS; 1149cdf0e10cSrcweir break; 1150cdf0e10cSrcweir case SWSTYLEBIT_LIST: 1151cdf0e10cSrcweir nId |= COLL_LISTS_BITS; 1152cdf0e10cSrcweir break; 1153cdf0e10cSrcweir case SWSTYLEBIT_IDX: 1154cdf0e10cSrcweir nId |= COLL_REGISTER_BITS; 1155cdf0e10cSrcweir break; 1156cdf0e10cSrcweir case SWSTYLEBIT_EXTRA: 1157cdf0e10cSrcweir nId |= COLL_EXTRA_BITS; 1158cdf0e10cSrcweir break; 1159cdf0e10cSrcweir case SWSTYLEBIT_HTML: 1160cdf0e10cSrcweir nId |= COLL_HTML_BITS; 1161cdf0e10cSrcweir break; 1162cdf0e10cSrcweir } 1163cdf0e10cSrcweir pColl->SetPoolFmtId(nId); 1164cdf0e10cSrcweir 1165cdf0e10cSrcweir pCurrWrtShell->SetTxtFmtColl(pColl); 1166cdf0e10cSrcweir pCurrWrtShell->EndAllAction(); 1167cdf0e10cSrcweir } 1168cdf0e10cSrcweir } 1169cdf0e10cSrcweir break; 1170cdf0e10cSrcweir case SFX_STYLE_FAMILY_FRAME: 1171cdf0e10cSrcweir { 1172cdf0e10cSrcweir SwFrmFmt* pFrm = pStyle->GetFrmFmt(); 1173cdf0e10cSrcweir if(pCurrWrtShell->IsFrmSelected() && pFrm && !pFrm->IsDefault()) 1174cdf0e10cSrcweir { 1175cdf0e10cSrcweir pCurrWrtShell->StartAllAction(); 1176cdf0e10cSrcweir 1177cdf0e10cSrcweir SfxItemSet aSet(GetPool(), aFrmFmtSetRange ); 1178cdf0e10cSrcweir pCurrWrtShell->GetFlyFrmAttr( aSet ); 1179cdf0e10cSrcweir 1180cdf0e10cSrcweir SwFrmFmt* pFFmt = pCurrWrtShell->GetCurFrmFmt(); 1181cdf0e10cSrcweir pFrm->SetDerivedFrom( pFFmt ); 1182cdf0e10cSrcweir 1183cdf0e10cSrcweir // JP 10.06.98: nur automatische Orientierungen uebernehmen 1184cdf0e10cSrcweir /* #61359# jetzt auch wieder alle Orientierungen 1185cdf0e10cSrcweir const SfxPoolItem* pItem; 1186cdf0e10cSrcweir if( SFX_ITEM_SET == aSet.GetItemState( RES_VERT_ORIENT, 1187cdf0e10cSrcweir sal_False, &pItem ) && 1188cdf0e10cSrcweir text::VertOrientation::NONE == ((SwFmtVertOrient*)pItem)->GetVertOrient()) 1189cdf0e10cSrcweir aSet.ClearItem( RES_VERT_ORIENT ); 1190cdf0e10cSrcweir 1191cdf0e10cSrcweir if( SFX_ITEM_SET == aSet.GetItemState( RES_HORI_ORIENT, 1192cdf0e10cSrcweir sal_False, &pItem ) && 1193cdf0e10cSrcweir text::HoriOrientation::NONE == ((SwFmtHoriOrient*)pItem)->GetHoriOrient()) 1194cdf0e10cSrcweir aSet.ClearItem( RES_HORI_ORIENT ); 1195cdf0e10cSrcweir */ 1196cdf0e10cSrcweir 1197cdf0e10cSrcweir pFrm->SetFmtAttr( aSet ); 1198cdf0e10cSrcweir // Vorlage auch anwenden, um harte Attributierung 1199cdf0e10cSrcweir // zu entfernen 1200cdf0e10cSrcweir pCurrWrtShell->SetFrmFmt( pFrm ); 1201cdf0e10cSrcweir pCurrWrtShell->EndAllAction(); 1202cdf0e10cSrcweir } 1203cdf0e10cSrcweir } 1204cdf0e10cSrcweir break; 1205cdf0e10cSrcweir case SFX_STYLE_FAMILY_CHAR: 1206cdf0e10cSrcweir { 1207cdf0e10cSrcweir SwCharFmt* pChar = pStyle->GetCharFmt(); 1208cdf0e10cSrcweir if(pChar && !pChar->IsDefault()) 1209cdf0e10cSrcweir { 1210cdf0e10cSrcweir pCurrWrtShell->StartAllAction(); 1211cdf0e10cSrcweir pCurrWrtShell->FillByEx( pChar ); 1212cdf0e10cSrcweir pChar->SetDerivedFrom( pCurrWrtShell->GetCurCharFmt() ); 1213cdf0e10cSrcweir SwFmtCharFmt aFmt( pChar ); 121469a74367SOliver-Rainer Wittmann pCurrWrtShell->SetAttrItem( aFmt ); 1215cdf0e10cSrcweir pCurrWrtShell->EndAllAction(); 1216cdf0e10cSrcweir } 1217cdf0e10cSrcweir } 1218cdf0e10cSrcweir break; 1219cdf0e10cSrcweir 1220cdf0e10cSrcweir case SFX_STYLE_FAMILY_PAGE: 1221cdf0e10cSrcweir { 1222cdf0e10cSrcweir pCurrWrtShell->StartAllAction(); 1223cdf0e10cSrcweir sal_uInt16 nPgDsc = pCurrWrtShell->GetCurPageDesc(); 1224cdf0e10cSrcweir SwPageDesc& rSrc = (SwPageDesc&)pCurrWrtShell->GetPageDesc( nPgDsc ); 1225cdf0e10cSrcweir SwPageDesc& rDest = *(SwPageDesc*)pStyle->GetPageDesc(); 1226cdf0e10cSrcweir 1227cdf0e10cSrcweir sal_uInt16 nPoolId = rDest.GetPoolFmtId(); 1228cdf0e10cSrcweir sal_uInt16 nHId = rDest.GetPoolHelpId(); 1229cdf0e10cSrcweir sal_uInt8 nHFId = rDest.GetPoolHlpFileId(); 1230cdf0e10cSrcweir 1231cdf0e10cSrcweir pCurrWrtShell->GetDoc()->CopyPageDesc( rSrc, rDest ); 1232cdf0e10cSrcweir 1233cdf0e10cSrcweir // PoolId darf NIE kopiert werden! 1234cdf0e10cSrcweir rDest.SetPoolFmtId( nPoolId ); 1235cdf0e10cSrcweir rDest.SetPoolHelpId( nHId ); 1236cdf0e10cSrcweir rDest.SetPoolHlpFileId( nHFId ); 1237cdf0e10cSrcweir 1238cdf0e10cSrcweir // werden Kopf-/Fusszeilen angelegt, so gibt es kein Undo mehr! 1239cdf0e10cSrcweir pCurrWrtShell->GetDoc()->GetIDocumentUndoRedo().DelAllUndoObj(); 1240cdf0e10cSrcweir 1241cdf0e10cSrcweir pCurrWrtShell->EndAllAction(); 1242cdf0e10cSrcweir } 1243cdf0e10cSrcweir break; 1244cdf0e10cSrcweir 1245cdf0e10cSrcweir case SFX_STYLE_FAMILY_PSEUDO: 1246cdf0e10cSrcweir { 1247cdf0e10cSrcweir pCurrWrtShell->StartAllAction(); 1248cdf0e10cSrcweir 124934760e49SOliver-Rainer Wittmann SwNumRule aRule( *pCurrWrtShell->GetNumRuleAtCurrCrsrPos() ); 1250cdf0e10cSrcweir String sOrigRule( aRule.GetName() ); 1251cdf0e10cSrcweir // --> OD 2008-07-08 #i91400# 1252cdf0e10cSrcweir aRule.SetName( pStyle->GetNumRule()->GetName(), 1253cdf0e10cSrcweir *(pCurrWrtShell->GetDoc()) ); 1254cdf0e10cSrcweir // <-- 1255cdf0e10cSrcweir pCurrWrtShell->ChgNumRuleFmts( aRule ); 1256cdf0e10cSrcweir 1257cdf0e10cSrcweir pCurrWrtShell->ReplaceNumRule( sOrigRule, aRule.GetName() ); 1258cdf0e10cSrcweir 1259cdf0e10cSrcweir 1260cdf0e10cSrcweir pCurrWrtShell->EndAllAction(); 1261cdf0e10cSrcweir } 1262cdf0e10cSrcweir break; 1263cdf0e10cSrcweir } 1264cdf0e10cSrcweir return nFamily; 1265cdf0e10cSrcweir } 1266cdf0e10cSrcweir 1267cdf0e10cSrcweir void SwDocShell::LoadStyles( SfxObjectShell& rSource ) 1268cdf0e10cSrcweir { 1269cdf0e10cSrcweir _LoadStyles(rSource, sal_False); 1270cdf0e10cSrcweir } 1271cdf0e10cSrcweir /* -----------------16.05.2003 15:45----------------- 1272cdf0e10cSrcweir bPreserveCurrentDocument determines whether SetFixFields() is called 1273cdf0e10cSrcweir This call modifies the source document. This mustn't happen when the source 1274cdf0e10cSrcweir is a document the user is working on. 1275cdf0e10cSrcweir Calls of ::LoadStyles() normally use files especially loaded for the purpose 1276cdf0e10cSrcweir of importing styles. 1277cdf0e10cSrcweir --------------------------------------------------*/ 1278cdf0e10cSrcweir void SwDocShell::_LoadStyles( SfxObjectShell& rSource, sal_Bool bPreserveCurrentDocument ) 1279cdf0e10cSrcweir { 1280cdf0e10cSrcweir /* [Beschreibung] 1281cdf0e10cSrcweir 1282cdf0e10cSrcweir Diese Methode wird vom SFx gerufen, wenn aus einer Dokument-Vorlage 1283cdf0e10cSrcweir Styles nachgeladen werden sollen. Bestehende Styles soll dabei 1284cdf0e10cSrcweir "uberschrieben werden. Das Dokument mu"s daher neu formatiert werden. 1285cdf0e10cSrcweir Daher werden die Applikationen in der Regel diese Methode "uberladen 1286cdf0e10cSrcweir und in ihrer Implementierung die Implementierung der Basisklasse 1287cdf0e10cSrcweir rufen. 1288cdf0e10cSrcweir */ 1289cdf0e10cSrcweir // ist die Source unser Document, dann uebernehmen wir das 1290cdf0e10cSrcweir // abpruefen selbst (wesentlich schneller und laeuft nicht ueber 1291cdf0e10cSrcweir // die Kruecke SfxStylePool 1292cdf0e10cSrcweir if( rSource.ISA( SwDocShell )) 1293cdf0e10cSrcweir { 1294cdf0e10cSrcweir //JP 28.05.99: damit die Kopf-/Fusszeilen nicht den fixen Inhalt 1295cdf0e10cSrcweir // der Vorlage erhalten, einmal alle FixFelder der 1296cdf0e10cSrcweir // Source aktualisieren 1297cdf0e10cSrcweir if(!bPreserveCurrentDocument) 1298cdf0e10cSrcweir ((SwDocShell&)rSource).pDoc->SetFixFields(false, NULL); 1299cdf0e10cSrcweir if( pWrtShell ) 1300cdf0e10cSrcweir { 1301cdf0e10cSrcweir pWrtShell->StartAllAction(); 1302cdf0e10cSrcweir pDoc->ReplaceStyles( *((SwDocShell&)rSource).pDoc ); 1303cdf0e10cSrcweir pWrtShell->EndAllAction(); 1304cdf0e10cSrcweir } 1305cdf0e10cSrcweir else 1306cdf0e10cSrcweir { 1307cdf0e10cSrcweir sal_Bool bModified = pDoc->IsModified(); 1308cdf0e10cSrcweir pDoc->ReplaceStyles( *((SwDocShell&)rSource).pDoc ); 1309cdf0e10cSrcweir if( !bModified && pDoc->IsModified() && !pView ) 1310cdf0e10cSrcweir { 1311cdf0e10cSrcweir // die View wird spaeter angelegt, ueberschreibt aber das 1312cdf0e10cSrcweir // Modify-Flag. Per Undo ist sowieso nichts mehr zu machen 1313cdf0e10cSrcweir pDoc->GetIDocumentUndoRedo().SetUndoNoResetModified(); 1314cdf0e10cSrcweir } 1315cdf0e10cSrcweir } 1316cdf0e10cSrcweir } 1317cdf0e10cSrcweir else 1318cdf0e10cSrcweir SfxObjectShell::LoadStyles( rSource ); 1319cdf0e10cSrcweir } 1320cdf0e10cSrcweir 1321cdf0e10cSrcweir 1322ff0525f2SOliver-Rainer Wittmann void SwDocShell::FormatPage( 1323ff0525f2SOliver-Rainer Wittmann const String& rPage, 1324ff0525f2SOliver-Rainer Wittmann const sal_uInt16 nSlot, 1325ff0525f2SOliver-Rainer Wittmann SwWrtShell& rActShell ) 1326cdf0e10cSrcweir { 1327ff0525f2SOliver-Rainer Wittmann Edit( rPage, aEmptyStr, SFX_STYLE_FAMILY_PAGE, 0, sal_False, nSlot, &rActShell); 1328cdf0e10cSrcweir } 1329cdf0e10cSrcweir 1330cdf0e10cSrcweir Bitmap SwDocShell::GetStyleFamilyBitmap( SfxStyleFamily eFamily, BmpColorMode eColorMode ) 1331cdf0e10cSrcweir { 1332cdf0e10cSrcweir if( SFX_STYLE_FAMILY_PSEUDO == eFamily ) 1333cdf0e10cSrcweir { 1334cdf0e10cSrcweir if ( eColorMode == BMP_COLOR_NORMAL ) 1335cdf0e10cSrcweir return Bitmap( SW_RES( BMP_STYLES_FAMILY_NUM )); 1336cdf0e10cSrcweir else 1337cdf0e10cSrcweir return Bitmap( SW_RES( BMP_STYLES_FAMILY_NUM_HC )); 1338cdf0e10cSrcweir } 1339cdf0e10cSrcweir 1340cdf0e10cSrcweir return SfxObjectShell::GetStyleFamilyBitmap( eFamily, eColorMode ); 1341cdf0e10cSrcweir } 1342cdf0e10cSrcweir 1343cdf0e10cSrcweir 1344cdf0e10cSrcweir 1345