Files
libreoffice/sw/source/ui/app/docshini.cxx

838 lines
29 KiB
C++
Raw Normal View History

2000-09-18 16:15:01 +00:00
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
2000-09-18 16:15:01 +00:00
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: docshini.cxx,v $
* $Revision: 1.67 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
2000-09-18 16:15:01 +00:00
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
2000-09-18 16:15:01 +00:00
*
************************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sw.hxx"
2000-09-18 16:15:01 +00:00
#include <hintids.hxx>
#ifndef _SVX_DIALOGS_HRC
#include <svx/dialogs.hrc>
#endif
#include <i18npool/mslangid.hxx>
2000-09-18 16:15:01 +00:00
#include <sot/storinfo.hxx>
#include <sot/storage.hxx>
2000-09-18 16:15:01 +00:00
#include <svtools/zforlist.hxx>
#include <svtools/ctrltool.hxx>
#include <svtools/lingucfg.hxx>
2000-10-31 19:33:20 +00:00
#include <sfx2/docfile.hxx>
2000-09-18 16:15:01 +00:00
#ifndef _OFA_MISCCFG_HXX //autogen
#include <svtools/misccfg.hxx>
2000-09-18 16:15:01 +00:00
#endif
#include <sfx2/printer.hxx>
#include <sfx2/bindings.hxx>
#include <svx/asiancfg.hxx>
2000-11-20 08:16:31 +00:00
#include <svx/unolingu.hxx>
#include <sfx2/request.hxx>
#include <svtools/intitem.hxx>
#include <svx/adjitem.hxx>
#ifndef _SVX_AKRNTEM_HXX
#include <svx/akrnitem.hxx>
#endif
2000-11-19 10:41:10 +00:00
#include <linguistic/lngprops.hxx>
#include <com/sun/star/document/UpdateDocMode.hpp>
#include <com/sun/star/i18n/ScriptType.hpp>
2001-07-23 16:20:51 +00:00
#include <rtl/logfile.hxx>
2000-09-18 16:15:01 +00:00
#include <sfx2/docfilt.hxx>
#include <svx/xtable.hxx>
#ifndef _SVX_DRAWITEM_HXX //autogen
2000-09-18 16:15:01 +00:00
#include <svx/drawitem.hxx>
#endif
#include <svx/fhgtitem.hxx>
2000-09-18 16:15:01 +00:00
#include <svx/fontitem.hxx>
#include <svx/flstitem.hxx>
#ifndef _SVX_TSTPITEM_HXX //autogen
#include <svx/tstpitem.hxx>
#endif
#include <svx/langitem.hxx>
#include <svx/colritem.hxx>
2000-09-18 16:15:01 +00:00
#include <svx/hyznitem.hxx>
#include <svx/svxacorr.hxx>
#include <vcl/svapp.hxx>
#include <view.hxx>
2001-05-10 07:48:50 +00:00
#include <prtopt.hxx>
2000-09-18 16:15:01 +00:00
#include <fmtcol.hxx>
#ifndef _DOCSH_HXX
#include <docsh.hxx>
#endif
#ifndef _WDOCSH_HXX
#include <wdocsh.hxx>
#endif
#include <swmodule.hxx>
#include <doc.hxx>
#include <docfac.hxx>
#include <docstyle.hxx>
#include <shellio.hxx>
#include <tox.hxx>
2001-03-23 14:55:45 +00:00
#include <swdtflvr.hxx>
2000-09-18 16:15:01 +00:00
#ifndef _DBMGR_HXX
#include <dbmgr.hxx>
#endif
#include <usrpref.hxx>
#include <fontcfg.hxx>
#include <poolfmt.hxx>
#ifndef _MODCFG_HXX
#include <modcfg.hxx>
#endif
#ifndef _GLOBDOC_HXX
#include <globdoc.hxx>
#endif
#include <ndole.hxx>
#include <mdiexp.hxx>
#include <unotxdoc.hxx>
#include <linkenum.hxx>
#include <swwait.hxx>
#include <wrtsh.hxx>
2000-09-18 16:15:01 +00:00
#include <swerror.h>
#ifndef _GLOBALS_HRC
#include <globals.hrc>
#endif
// #i18732#
#include <fmtfollowtextflow.hxx>
#include <unochart.hxx>
// text grid
#include <tgrditem.hxx>
2000-09-18 16:15:01 +00:00
using namespace ::com::sun::star::i18n;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::uno;
2000-09-18 16:15:01 +00:00
using namespace ::com::sun::star;
using ::rtl::OUString;
2000-09-18 16:15:01 +00:00
/*-----------------21.09.96 15.29-------------------
--------------------------------------------------*/
/*--------------------------------------------------------------------
Beschreibung: Document laden
--------------------------------------------------------------------*/
sal_Bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor )
2000-09-18 16:15:01 +00:00
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDocShell::InitNew" );
2001-07-23 16:20:51 +00:00
sal_Bool bRet = SfxObjectShell::InitNew( xStor );
ASSERT( GetMapUnit() == MAP_TWIP, "map unit is not twip!" );
sal_Bool bHTMLTemplSet = sal_False;
2000-09-18 16:15:01 +00:00
if( bRet )
{
AddLink(); // pDoc / pIo ggf. anlegen
2000-09-18 16:15:01 +00:00
2001-05-10 07:48:50 +00:00
sal_Bool bWeb = ISA( SwWebDocShell );
if ( bWeb )
bHTMLTemplSet = SetHTMLTemplate( *GetDoc() );//Styles aus HTML.vor
2000-09-18 16:15:01 +00:00
else if( ISA( SwGlobalDocShell ) )
GetDoc()->set(IDocumentSettingAccess::GLOBAL_DOCUMENT, true); // Globaldokument
2000-09-18 16:15:01 +00:00
/*
//JP 12.07.95: so einfach waere es fuer die neu Mimik
pDoc->SetDefault( SvxTabStopItem( 1,
GetStar Writer App()->GetUsrPref()->GetDefTabDist(),
SVX_TAB_ADJUST_DEFAULT,
RES_PARATR_TABSTOP));
*/
if ( GetCreateMode() == SFX_CREATE_MODE_EMBEDDED )
SwTransferable::InitOle( this, *pDoc );
// set forbidden characters if necessary
SvxAsianConfig aAsian;
Sequence<Locale> aLocales = aAsian.GetStartEndCharLocales();
if(aLocales.getLength())
{
const Locale* pLocales = aLocales.getConstArray();
for(sal_Int32 i = 0; i < aLocales.getLength(); i++)
{
ForbiddenCharacters aForbidden;
aAsian.GetStartEndChars( pLocales[i], aForbidden.beginLine, aForbidden.endLine);
LanguageType eLang = SvxLocaleToLanguage(pLocales[i]);
pDoc->setForbiddenCharacters( eLang, aForbidden);
}
}
pDoc->set(IDocumentSettingAccess::KERN_ASIAN_PUNCTUATION,
!aAsian.IsKerningWesternTextOnly());
pDoc->setCharacterCompressionType(static_cast<SwCharCompressType>(aAsian.GetCharDistanceCompression()));
pDoc->setPrintData(*SW_MOD()->GetPrtOptions(bWeb));
SubInitNew();
2000-09-18 16:15:01 +00:00
// fuer alle
SwStdFontConfig* pStdFont = SW_MOD()->GetStdFontConfig();
SfxPrinter* pPrt = pDoc->getPrinter( false );
2000-09-18 16:15:01 +00:00
String sEntry;
USHORT aFontWhich[] =
{ RES_CHRATR_FONT,
RES_CHRATR_CJK_FONT,
RES_CHRATR_CTL_FONT
};
USHORT aFontHeightWhich[] =
{
RES_CHRATR_FONTSIZE,
RES_CHRATR_CJK_FONTSIZE,
RES_CHRATR_CTL_FONTSIZE
};
USHORT aFontIds[] =
2000-09-18 16:15:01 +00:00
{
FONT_STANDARD,
FONT_STANDARD_CJK,
FONT_STANDARD_CTL
};
2002-09-24 13:07:39 +00:00
USHORT nFontTypes[] =
{
DEFAULTFONT_LATIN_TEXT,
DEFAULTFONT_CJK_TEXT,
DEFAULTFONT_CTL_TEXT
};
USHORT aLangTypes[] =
{
RES_CHRATR_LANGUAGE,
RES_CHRATR_CJK_LANGUAGE,
RES_CHRATR_CTL_LANGUAGE
};
2002-09-24 13:07:39 +00:00
for(sal_uInt8 i = 0; i < 3; i++)
{
USHORT nFontWhich = aFontWhich[i];
USHORT nFontId = aFontIds[i];
SvxFontItem* pFontItem = 0;
const SvxLanguageItem& rLang = (const SvxLanguageItem&)pDoc->GetDefault( aLangTypes[i] );
LanguageType eLanguage = rLang.GetLanguage();
2001-05-11 09:37:23 +00:00
if(!pStdFont->IsFontDefault(nFontId))
2000-09-18 16:15:01 +00:00
{
2001-05-11 09:37:23 +00:00
sEntry = pStdFont->GetFontFor(nFontId);
sal_Bool bDelete = sal_False;
const SfxFont* pFnt = pPrt ? pPrt->GetFontByName(sEntry): 0;
if(!pFnt)
{
pFnt = new SfxFont( FAMILY_DONTKNOW, sEntry, PITCH_DONTKNOW,
::gsl_getSystemTextEncoding() );
bDelete = sal_True;
}
pFontItem = new SvxFontItem(pFnt->GetFamily(), pFnt->GetName(),
aEmptyStr, pFnt->GetPitch(), pFnt->GetCharSet(), nFontWhich);
2001-05-11 09:37:23 +00:00
if(bDelete)
{
delete (SfxFont*) pFnt;
bDelete = sal_False;
}
2000-09-18 16:15:01 +00:00
}
else
{
// #107782# OJ use korean language if latin was used
if ( i == 0 )
{
LanguageType eUiLanguage = Application::GetSettings().GetUILanguage();
switch( eUiLanguage )
{
case LANGUAGE_KOREAN:
case LANGUAGE_KOREAN_JOHAB:
eLanguage = eUiLanguage;
break;
}
}
2002-09-24 13:07:39 +00:00
Font aLangDefFont = OutputDevice::GetDefaultFont(
2002-09-24 13:07:39 +00:00
nFontTypes[i],
eLanguage,
DEFAULTFONT_FLAGS_ONLYONE );
pFontItem = new SvxFontItem(aLangDefFont.GetFamily(), aLangDefFont.GetName(),
aEmptyStr, aLangDefFont.GetPitch(), aLangDefFont.GetCharSet(), nFontWhich);
}
pDoc->SetDefault(*pFontItem);
if( !bHTMLTemplSet )
{
SwTxtFmtColl *pColl = pDoc->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
pColl->ResetFmtAttr(nFontWhich);
}
delete pFontItem;
sal_Int32 nFontHeight = pStdFont->GetFontHeight( FONT_STANDARD, i, eLanguage );
if(nFontHeight <= 0)
nFontHeight = pStdFont->GetDefaultHeightFor( nFontId, eLanguage );
pDoc->SetDefault(SvxFontHeightItem( nFontHeight, 100, aFontHeightWhich[i] ));
if( !bHTMLTemplSet )
{
SwTxtFmtColl *pColl = pDoc->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
pColl->ResetFmtAttr(aFontHeightWhich[i]);
}
2000-09-18 16:15:01 +00:00
}
2001-05-11 09:37:23 +00:00
USHORT aFontIdPoolId[] =
2000-09-18 16:15:01 +00:00
{
2001-05-11 09:37:23 +00:00
FONT_OUTLINE, RES_POOLCOLL_HEADLINE_BASE,
FONT_LIST, RES_POOLCOLL_NUMBUL_BASE,
FONT_CAPTION, RES_POOLCOLL_LABEL,
FONT_INDEX, RES_POOLCOLL_REGISTER_BASE,
FONT_OUTLINE_CJK, RES_POOLCOLL_HEADLINE_BASE,
FONT_LIST_CJK, RES_POOLCOLL_NUMBUL_BASE,
FONT_CAPTION_CJK, RES_POOLCOLL_LABEL,
2002-08-20 12:34:44 +00:00
FONT_INDEX_CJK, RES_POOLCOLL_REGISTER_BASE,
FONT_OUTLINE_CTL, RES_POOLCOLL_HEADLINE_BASE,
FONT_LIST_CTL, RES_POOLCOLL_NUMBUL_BASE,
FONT_CAPTION_CTL, RES_POOLCOLL_LABEL,
FONT_INDEX_CTL, RES_POOLCOLL_REGISTER_BASE
2001-05-11 09:37:23 +00:00
};
USHORT nFontWhich = RES_CHRATR_FONT;
USHORT nFontHeightWhich = RES_CHRATR_FONTSIZE;
LanguageType eLanguage = static_cast<const SvxLanguageItem&>(pDoc->GetDefault( RES_CHRATR_LANGUAGE )).GetLanguage();
for(sal_uInt8 nIdx = 0; nIdx < 24; nIdx += 2)
2000-09-18 16:15:01 +00:00
{
2001-05-11 09:37:23 +00:00
if(nIdx == 8)
{
2001-05-11 09:37:23 +00:00
nFontWhich = RES_CHRATR_CJK_FONT;
nFontHeightWhich = RES_CHRATR_CJK_FONTSIZE;
eLanguage = static_cast<const SvxLanguageItem&>(pDoc->GetDefault( RES_CHRATR_CJK_LANGUAGE )).GetLanguage();
}
2002-08-20 12:34:44 +00:00
else if(nIdx == 16)
{
2002-08-20 12:34:44 +00:00
nFontWhich = RES_CHRATR_CTL_FONT;
nFontHeightWhich = RES_CHRATR_CTL_FONTSIZE;
eLanguage = static_cast<const SvxLanguageItem&>(pDoc->GetDefault( RES_CHRATR_CTL_LANGUAGE )).GetLanguage();
}
SwTxtFmtColl *pColl = 0;
2001-05-11 09:37:23 +00:00
if(!pStdFont->IsFontDefault(aFontIdPoolId[nIdx]))
{
sEntry = pStdFont->GetFontFor(aFontIdPoolId[nIdx]);
sal_Bool bDelete = sal_False;
const SfxFont* pFnt = pPrt ? pPrt->GetFontByName(sEntry): 0;
if(!pFnt)
{
pFnt = new SfxFont( FAMILY_DONTKNOW, sEntry, PITCH_DONTKNOW,
::gsl_getSystemTextEncoding() );
bDelete = sal_True;
}
pColl = pDoc->GetTxtCollFromPool(aFontIdPoolId[nIdx + 1]);
if( !bHTMLTemplSet ||
SFX_ITEM_SET != pColl->GetAttrSet().GetItemState(
nFontWhich, sal_False ) )
{
pColl->SetFmtAttr(SvxFontItem(pFnt->GetFamily(), pFnt->GetName(),
aEmptyStr, pFnt->GetPitch(), pFnt->GetCharSet(), nFontWhich));
}
2001-05-11 09:37:23 +00:00
if(bDelete)
{
delete (SfxFont*) pFnt;
}
}
sal_Int32 nFontHeight = pStdFont->GetFontHeight( static_cast< sal_Int8 >(aFontIdPoolId[nIdx]), 0, eLanguage );
if(nFontHeight <= 0)
nFontHeight = pStdFont->GetDefaultHeightFor( aFontIdPoolId[nIdx], eLanguage );
if(!pColl)
pColl = pDoc->GetTxtCollFromPool(aFontIdPoolId[nIdx + 1]);
SvxFontHeightItem aFontHeight( (const SvxFontHeightItem&)pColl->GetFmtAttr( nFontHeightWhich, sal_True ));
if(aFontHeight.GetHeight() != sal::static_int_cast<sal_uInt32, sal_Int32>(nFontHeight))
{
aFontHeight.SetHeight(nFontHeight);
pColl->SetFmtAttr( aFontHeight );
}
2000-09-18 16:15:01 +00:00
}
}
/* #106748# If the default frame direction of a document is RTL
the default adjusment is to the right. */
if( !bHTMLTemplSet &&
FRMDIR_HORI_RIGHT_TOP == GetDefaultFrameDirection(GetAppLanguage()) )
pDoc->SetDefault( SvxAdjustItem(SVX_ADJUST_RIGHT, RES_PARATR_ADJUST ) );
// OD 09.10.2003 #i18732# - set dynamic pool default for
// item RES_FOLLOW_TEXT_FLOW to FALSE for *new document*.
// Thus, redo this change in method <SwDoc::RemoveAllFmtLanguageDependencies()>,
// which is called from <SwDocShell::ConvertFrom(..)> in order to restore
// the static pool default.
pDoc->SetDefault( SwFmtFollowTextFlow( FALSE ) );
// --> collapsing borders FME 2005-05-27 #i29550#
pDoc->SetDefault( SfxBoolItem( RES_COLLAPSING_BORDERS, TRUE ) );
// <-- collapsing
//#i16874# AutoKerning as default for new documents
pDoc->SetDefault( SvxAutoKernItem( sal_True, RES_CHRATR_AUTOKERN ) );
// --> OD 2005-02-10 #i42080# - Due to the several calls of method <SetDefault(..)>
// at the document instance, the document is modified. Thus, reset this
// status here. Note: In method <SubInitNew()> this is also done.
pDoc->ResetModified();
// <--
2000-09-18 16:15:01 +00:00
return bRet;
}
/*--------------------------------------------------------------------
Beschreibung: Ctor mit SfxCreateMode ?????
--------------------------------------------------------------------*/
SwDocShell::SwDocShell( SfxObjectCreateMode eMode, sal_Bool _bScriptingSupport ) :
SfxObjectShell ( eMode ),
2000-09-18 16:15:01 +00:00
pDoc(0),
pFontList(0),
pView( 0 ),
pWrtShell( 0 ),
pOLEChildList( 0 ),
nUpdateDocMode(document::UpdateDocMode::ACCORDING_TO_CONFIG),
bInUpdateFontList(false)
2000-09-18 16:15:01 +00:00
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDocShell::SwDocShell" );
if ( !_bScriptingSupport )
SetHasNoBasic();
Init_Impl();
2000-09-18 16:15:01 +00:00
}
/*--------------------------------------------------------------------
Beschreibung: Ctor / Dtor
--------------------------------------------------------------------*/
SwDocShell::SwDocShell( SwDoc *pD, SfxObjectCreateMode eMode ):
SfxObjectShell ( eMode ),
2000-09-18 16:15:01 +00:00
pDoc(pD),
pFontList(0),
pView( 0 ),
pWrtShell( 0 ),
pOLEChildList( 0 ),
nUpdateDocMode(document::UpdateDocMode::ACCORDING_TO_CONFIG),
bInUpdateFontList(false)
2000-09-18 16:15:01 +00:00
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDocShell::SwDocShell" );
Init_Impl();
2000-09-18 16:15:01 +00:00
}
/*--------------------------------------------------------------------
Beschreibung: Dtor
--------------------------------------------------------------------*/
SwDocShell::~SwDocShell()
{
// disable chart related objects now because in ~SwDoc it may be to late for this
if( pDoc )
{
pDoc->GetChartControllerHelper().Disconnect();
SwChartDataProvider *pPCD = pDoc->GetChartDataProvider();
if (pPCD)
pPCD->dispose();
}
2000-09-18 16:15:01 +00:00
RemoveLink();
delete pFontList;
// wir als BroadCaster werden auch unser eigener Listener
// (fuer DocInfo/FileNamen/....)
EndListening( *this );
SvxColorTableItem* pColItem = (SvxColorTableItem*)GetItem(SID_COLOR_TABLE);
// wird nur die DocInfo fuer den Explorer gelesen, ist das Item nicht da
if(pColItem)
{
XColorTable* pTable = pColItem->GetColorTable();
// wurde eine neue Table angelegt, muss sie auch geloescht werden.
if((void*)pTable != (void*)(XColorTable::GetStdColorTable()) )
2000-09-18 16:15:01 +00:00
delete pTable;
}
delete pOLEChildList;
2000-09-18 16:15:01 +00:00
}
/* -----------------------------10.09.2001 15:59------------------------------
2000-09-18 16:15:01 +00:00
---------------------------------------------------------------------------*/
void SwDocShell::Init_Impl()
{
SetPool(&SW_MOD()->GetPool());
SetBaseModel(new SwXTextDocument(this));
// wir als BroadCaster werden auch unser eigener Listener
// (fuer DocInfo/FileNamen/....)
StartListening( *this );
//position of the "Automatic" style filter for the stylist (app.src)
SetAutoStyleFilterIndex(3);
// set map unit to twip
SetMapUnit( MAP_TWIP );
}
2000-09-18 16:15:01 +00:00
/*--------------------------------------------------------------------
Beschreibung: AddLink
--------------------------------------------------------------------*/
void SwDocShell::AddLink()
{
if( !pDoc )
{
SwDocFac aFactory;
pDoc = aFactory.GetDoc();
pDoc->acquire();
pDoc->set(IDocumentSettingAccess::HTML_MODE, ISA(SwWebDocShell) );
2000-09-18 16:15:01 +00:00
}
else
pDoc->acquire();
2000-09-18 16:15:01 +00:00
pDoc->SetDocShell( this ); // am Doc den DocShell-Pointer setzen
uno::Reference< text::XTextDocument > xDoc(GetBaseModel(), uno::UNO_QUERY);
((SwXTextDocument*)xDoc.get())->Reactivate(this);
SetPool(&pDoc->GetAttrPool());
// am besten erst wenn eine sdbcx::View erzeugt wird !!!
pDoc->SetOle2Link(LINK(this, SwDocShell, Ole2ModifiedHdl));
}
/*--------------------------------------------------------------------
Beschreibung: neue FontList erzeugen Aenderung Drucker
--------------------------------------------------------------------*/
void SwDocShell::UpdateFontList()
{
if(!bInUpdateFontList)
2000-09-18 16:15:01 +00:00
{
bInUpdateFontList = true;
ASSERT(pDoc, "Kein Doc keine FontList");
if( pDoc )
{
delete pFontList;
pFontList = new FontList( pDoc->getReferenceDevice( true ) );
PutItem( SvxFontListItem( pFontList, SID_ATTR_CHAR_FONTLIST ) );
}
bInUpdateFontList = false;
2000-09-18 16:15:01 +00:00
}
}
/*--------------------------------------------------------------------
Beschreibung: RemoveLink
--------------------------------------------------------------------*/
void SwDocShell::RemoveLink()
{
// Uno-Object abklemmen
uno::Reference< text::XTextDocument > xDoc(GetBaseModel(), uno::UNO_QUERY);
((SwXTextDocument*)xDoc.get())->Invalidate();
aFinishedTimer.Stop();
if(pDoc)
{
if( mxBasePool.is() )
{
static_cast<SwDocStyleSheetPool*>(mxBasePool.get())->dispose();
mxBasePool.clear();
}
sal_Int8 nRefCt = static_cast< sal_Int8 >(pDoc->release());
2000-09-18 16:15:01 +00:00
pDoc->SetOle2Link(Link());
pDoc->SetDocShell( 0 );
if( !nRefCt )
delete pDoc;
pDoc = 0; // wir haben das Doc nicht mehr !!
}
}
2001-02-08 14:51:15 +00:00
void SwDocShell::InvalidateModel()
{
// Uno-Object abklemmen
uno::Reference< text::XTextDocument > xDoc(GetBaseModel(), uno::UNO_QUERY);
((SwXTextDocument*)xDoc.get())->Invalidate();
}
void SwDocShell::ReactivateModel()
{
// Uno-Object abklemmen
uno::Reference< text::XTextDocument > xDoc(GetBaseModel(), uno::UNO_QUERY);
((SwXTextDocument*)xDoc.get())->Reactivate(this);
}
2000-09-18 16:15:01 +00:00
/*--------------------------------------------------------------------
Beschreibung: Laden, Default-Format
--------------------------------------------------------------------*/
sal_Bool SwDocShell::Load( SfxMedium& rMedium )
2000-09-18 16:15:01 +00:00
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDocShell::Load" );
2000-09-18 16:15:01 +00:00
sal_Bool bRet = sal_False;
if( SfxObjectShell::Load( rMedium ))
2000-09-18 16:15:01 +00:00
{
2001-07-23 16:20:51 +00:00
RTL_LOGFILE_CONTEXT_TRACE( aLog, "after SfxInPlaceObject::Load" );
2000-09-18 16:15:01 +00:00
if( pDoc ) // fuer Letzte Version !!
RemoveLink(); // das existierende Loslassen
AddLink(); // Link setzen und Daten updaten !!
// Das Laden
// fuer MD
ASSERT( !mxBasePool.is(), "wer hat seinen Pool nicht zerstoert?" );
mxBasePool = new SwDocStyleSheetPool( *pDoc, SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
if(GetCreateMode() != SFX_CREATE_MODE_ORGANIZER)
{
SFX_ITEMSET_ARG( rMedium.GetItemSet(), pUpdateDocItem, SfxUInt16Item, SID_UPDATEDOCMODE, sal_False);
nUpdateDocMode = pUpdateDocItem ? pUpdateDocItem->GetValue() : document::UpdateDocMode::NO_UPDATE;
}
2000-09-18 16:15:01 +00:00
SwWait aWait( *this, sal_True );
sal_uInt32 nErr = ERR_SWG_READ_ERROR;
switch( GetCreateMode() )
{
// case SFX_CREATE_MODE_INTERNAL:
// nErr = 0;
// break;
case SFX_CREATE_MODE_ORGANIZER:
2001-03-06 10:17:30 +00:00
{
if( ReadXML )
2001-03-06 10:17:30 +00:00
{
ReadXML->SetOrganizerMode( TRUE );
SwReader aRdr( rMedium, aEmptyStr, pDoc );
nErr = aRdr.Read( *ReadXML );
ReadXML->SetOrganizerMode( FALSE );
2001-03-06 10:17:30 +00:00
}
}
2000-09-18 16:15:01 +00:00
break;
case SFX_CREATE_MODE_INTERNAL:
case SFX_CREATE_MODE_EMBEDDED:
{
// fuer MWERKS (Mac-Compiler): kann nicht selbststaendig casten
SwTransferable::InitOle( this, *pDoc );
}
2000-09-18 16:15:01 +00:00
// SfxProgress unterdruecken, wenn man Embedded ist
SW_MOD()->SetEmbeddedLoadSave( sal_True );
// kein break;
case SFX_CREATE_MODE_STANDARD:
case SFX_CREATE_MODE_PREVIEW:
{
Reader *pReader = ReadXML;
if( pReader )
2000-09-18 16:15:01 +00:00
{
// die DocInfo vom Doc am DocShell-Medium setzen
2001-07-23 16:20:51 +00:00
RTL_LOGFILE_CONTEXT_TRACE( aLog, "before ReadDocInfo" );
SwReader aRdr( rMedium, aEmptyStr, pDoc );
2001-07-23 16:20:51 +00:00
RTL_LOGFILE_CONTEXT_TRACE( aLog, "before Read" );
nErr = aRdr.Read( *pReader );
2001-07-23 16:20:51 +00:00
RTL_LOGFILE_CONTEXT_TRACE( aLog, "after Read" );
// If a XML document is loaded, the global doc/web doc
// flags have to be set, because they aren't loaded
// by this formats.
if( ISA( SwWebDocShell ) )
{
if( !pDoc->get(IDocumentSettingAccess::HTML_MODE) )
pDoc->set(IDocumentSettingAccess::HTML_MODE, true);
}
if( ISA( SwGlobalDocShell ) )
{
if( !pDoc->get(IDocumentSettingAccess::GLOBAL_DOCUMENT) )
pDoc->set(IDocumentSettingAccess::GLOBAL_DOCUMENT, true);
}
2000-09-18 16:15:01 +00:00
}
#ifndef PRODUCT
else
ASSERT( !this, "ohne Sw3Reader geht nichts" );
2000-09-18 16:15:01 +00:00
#endif
}
2000-09-18 16:15:01 +00:00
break;
default:
ASSERT( !this, "Load: new CreateMode?" );
}
UpdateFontList();
InitDraw();
CWS-TOOLING: integrate CWS fwk103 2009-05-26 12:44:25 +0200 mst r272292 : #i100727# - svtools/inc/svtools/parhtml.hxx, svtools/source/svhtml/parhtml.cxx: + fix warning: rename method to prevent overloading 2009-05-19 13:42:31 +0200 mav r272075 : #i101356# add comment 2009-05-19 10:56:24 +0200 mav r272062 : #i101356# register the singleton correctly 2009-05-19 10:25:42 +0200 mav r272060 : #i101356# register the singleton correctly 2009-05-18 12:48:48 +0200 mav r272013 : #i91306# fix the typo 2009-05-14 08:50:06 +0200 mav r271871 : #i101356# reduce the amount of macros 2009-05-13 13:26:08 +0200 mav r271858 : #i101356# reduce the amount of macros 2009-05-13 11:29:16 +0200 mav r271849 : #i101356# reduce the amount of macros 2009-05-12 12:09:42 +0200 mav r271815 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 12:03:20 +0200 mav r271814 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:58:48 +0200 mav r271813 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:53:05 +0200 mav r271812 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:48:36 +0200 mav r271810 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:43:45 +0200 mav r271809 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:39:38 +0200 mav r271808 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:37:38 +0200 mav r271806 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:33:58 +0200 mav r271805 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:30:01 +0200 mav r271804 : #i101356# allow to generate a small log if a document can not be stored 2009-05-06 17:43:38 +0200 mst r271607 : #i100727# - svtools/source/svhtml/parhtml.cxx: + adapt code to renaming of HTML constants (sb107) 2009-05-05 11:14:18 +0200 mav r271507 : #i101222# avoid warning 2009-05-05 10:27:23 +0200 mav r271505 : #i101426# send the modified() notification only when the document can be modified 2009-05-05 10:25:07 +0200 mav r271504 : #i101426# send the modified() notification only when the document is modified 2009-05-05 08:42:48 +0200 mav r271497 : CWS-TOOLING: rebase CWS fwk103 to trunk@271427 (milestone: DEV300:m47) 2009-04-30 13:32:11 +0200 mav r271412 : #i100518# check the template folders quietly 2009-04-29 20:04:25 +0200 mst r271393 : - sw/source/filter/html/swhtml.cxx: + fix wrong initialization order in constructor 2009-04-28 12:28:46 +0200 mav r271319 : #i99142# set the error correctly 2009-04-28 08:44:48 +0200 mav r271305 : #i99050# clear hidden flag if necessary 2009-04-28 08:40:10 +0200 mav r271304 : #i99050# avoid crash 2009-04-22 07:40:11 +0200 mav r271056 : #i101093# lets not affect the performance 2009-04-15 09:30:47 +0200 cd r270820 : #i99771# Fix warnings for gcc 4.4 2009-04-15 09:19:52 +0200 cd r270819 : #i99771# Fix warnings for gcc 4.4 2009-04-15 08:42:34 +0200 cd r270817 : #i99771# Fix warnings for gcc 4.4 2009-04-14 14:31:01 +0200 mav r270768 : #i99493# fix typo 2009-04-01 12:45:43 +0200 mst r270317 : fix #i100727# - svtools/inc/svtools/svparser.hxx, svtools/source/svrtf/svparser.cxx, sfx2/inc/sfx2/docfile.hxx, sfx2/source/doc/{objmisc.cxx,docfile.cxx}: + move SvKeyValue stuff from sfx2 to svtools - svtools/inc/svtools/parhtml.hxx, svtools/source/svhtml/parhtml.cxx, sfx2/inc/sfx2/sfxhtml.hxx, sfx2/source/bastyp/sfxhtml.cxx: + move ParseMetaOptions() and GetEncodingByMIME() from SfxHTMLParser (sfx2) to HTMLParser (svtools) + make HTMLParser::ParseMetaOptions() a virtual function + HTMLParser::ParseMetaOptions() calls GetExtendedCompatibilityTextEncoding() + new template method HTMLParser::AddMetaUserDefined() - svtools/source/svhtml/makefile.mk: + enable exceptions for parhtml.cxx - dbaccess/source/ui/misc/HtmlReader.cxx, sc/source/filter/html/htmlpars.cxx: + remove encoding related code duplication - sw/source/filter/html/{swhtml{.hxx,.cxx},htmlfld.cxx}: + new SwHTMLParser::AddMetaUserDefined() for import of DOCINFO field subtypes INFO[1-4] + do not use DocumentInfo for import of DOCINFO field subtypes INFO[1-4] 2009-03-31 17:01:35 +0200 mav r270288 : #i91214# fix typo 2009-03-31 15:19:41 +0200 mav r270285 : #i100123# allow to turn OOo locking mechanics off 2009-03-31 15:00:36 +0200 mav r270284 : #i100123# allow to turn OOo locking mechanics off 2009-03-31 12:19:13 +0200 mav r270270 : #i100123# taking the lock file over throws no exception 2009-03-30 13:57:21 +0200 mav r270227 : #i100351# fix the typo 2009-03-30 13:47:26 +0200 mav r270225 : #i99885# let OK be default button 2009-03-29 19:38:55 +0200 mav r270190 : CWS-TOOLING: rebase CWS fwk103 to trunk@270033 (milestone: DEV300:m45) 2009-03-16 16:39:48 +0100 mav r269558 : #i93558# convert the attributes as well 2009-03-13 15:35:55 +0100 mav r269488 : #i93558# improve manifest.xml parsing 2009-03-13 08:47:00 +0100 mav r269454 : #i96205# allow to remove password on SaveAs 2009-03-12 13:36:07 +0100 mav r269398 : #i91306# show special error in case of shared document 2009-03-12 13:33:35 +0100 mav r269397 : #i91306# introduce the new error-message 2009-03-12 11:40:42 +0100 mst r269378 : fix #i90877# - svtools/source/uno/unoevent.cxx: + use proper operator delete[] 2009-02-26 15:23:10 +0100 mav r268526 : #i91214# do not use ATL 2009-02-26 14:19:06 +0100 mav r268516 : #i98909# integrate the patch 2009-02-10 17:29:52 +0100 cd r267568 : #i98649# Make sure that we catch the NoSuchElementException when a module is not installed.
2009-06-16 16:15:54 +00:00
SetError( nErr, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
2000-09-18 16:15:01 +00:00
bRet = !IsError( nErr );
// --> OD 2006-11-07 #i59688#
// // StartFinishedLoading rufen.
// if( bRet && !pDoc->IsInLoadAsynchron() &&
// GetCreateMode() == SFX_CREATE_MODE_STANDARD )
// StartLoadFinishedTimer();
if ( bRet && !pDoc->IsInLoadAsynchron() &&
GetCreateMode() == SFX_CREATE_MODE_STANDARD )
{
LoadingFinished();
}
// <--
2000-09-18 16:15:01 +00:00
// SfxProgress unterdruecken, wenn man Embedded ist
SW_MOD()->SetEmbeddedLoadSave( sal_False );
}
2000-09-18 16:15:01 +00:00
return bRet;
}
/*--------------------------------------------------------------------
Beschreibung:
--------------------------------------------------------------------*/
sal_Bool SwDocShell::LoadFrom( SfxMedium& rMedium )
2000-09-18 16:15:01 +00:00
{
RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDocShell::LoadFrom" );
2000-09-18 16:15:01 +00:00
sal_Bool bRet = sal_False;
if( pDoc )
RemoveLink();
AddLink(); // Link setzen und Daten updaten !!
do { // middle check loop
sal_uInt32 nErr = ERR_SWG_READ_ERROR;
//const String& rNm = pStor->GetName();
2001-03-06 10:17:30 +00:00
String aStreamName;
aStreamName = String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM("styles.xml"));
uno::Reference < container::XNameAccess > xAccess( rMedium.GetStorage(), uno::UNO_QUERY );
if ( xAccess->hasByName( aStreamName ) && rMedium.GetStorage()->isStreamElement( aStreamName ) )
2000-09-18 16:15:01 +00:00
{
// Das Laden
SwWait aWait( *this, sal_True );
2001-03-06 10:17:30 +00:00
{
ASSERT( !mxBasePool.is(), "wer hat seinen Pool nicht zerstoert?" );
mxBasePool = new SwDocStyleSheetPool( *pDoc, SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
if( ReadXML )
2001-03-06 10:17:30 +00:00
{
ReadXML->SetOrganizerMode( TRUE );
SwReader aRdr( rMedium, aEmptyStr, pDoc );
nErr = aRdr.Read( *ReadXML );
ReadXML->SetOrganizerMode( FALSE );
2001-03-06 10:17:30 +00:00
}
}
2000-09-18 16:15:01 +00:00
}
else
{
DBG_ERROR("Code removed!");
/*
//TODO/LATER: looks like some binary stuff?!
2000-09-18 16:15:01 +00:00
// sollte es sich um eine 2. Vrolage handeln ??
if( SvStorage::IsStorageFile( rNm ) )
break;
const SfxFilter* pFltr = SwIoSystem::GetFileFilter( rNm, aEmptyStr );
2000-10-31 19:33:20 +00:00
if( !pFltr || !pFltr->GetUserData().EqualsAscii( FILTER_SWG ))
2000-09-18 16:15:01 +00:00
break;
2000-10-31 19:33:20 +00:00
SfxMedium aMed( rNm, STREAM_STD_READ, FALSE );
if( 0 == ( nErr = aMed.GetInStream()->GetError() ) )
2000-09-18 16:15:01 +00:00
{
SwWait aWait( *this, sal_True );
2000-10-31 19:33:20 +00:00
SwReader aRead( aMed, rNm, pDoc );
2000-09-18 16:15:01 +00:00
nErr = aRead.Read( *ReadSwg );
}
*/
2001-03-06 10:17:30 +00:00
}
2000-09-18 16:15:01 +00:00
CWS-TOOLING: integrate CWS fwk103 2009-05-26 12:44:25 +0200 mst r272292 : #i100727# - svtools/inc/svtools/parhtml.hxx, svtools/source/svhtml/parhtml.cxx: + fix warning: rename method to prevent overloading 2009-05-19 13:42:31 +0200 mav r272075 : #i101356# add comment 2009-05-19 10:56:24 +0200 mav r272062 : #i101356# register the singleton correctly 2009-05-19 10:25:42 +0200 mav r272060 : #i101356# register the singleton correctly 2009-05-18 12:48:48 +0200 mav r272013 : #i91306# fix the typo 2009-05-14 08:50:06 +0200 mav r271871 : #i101356# reduce the amount of macros 2009-05-13 13:26:08 +0200 mav r271858 : #i101356# reduce the amount of macros 2009-05-13 11:29:16 +0200 mav r271849 : #i101356# reduce the amount of macros 2009-05-12 12:09:42 +0200 mav r271815 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 12:03:20 +0200 mav r271814 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:58:48 +0200 mav r271813 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:53:05 +0200 mav r271812 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:48:36 +0200 mav r271810 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:43:45 +0200 mav r271809 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:39:38 +0200 mav r271808 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:37:38 +0200 mav r271806 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:33:58 +0200 mav r271805 : #i101356# allow to generate a small log if a document can not be stored 2009-05-12 11:30:01 +0200 mav r271804 : #i101356# allow to generate a small log if a document can not be stored 2009-05-06 17:43:38 +0200 mst r271607 : #i100727# - svtools/source/svhtml/parhtml.cxx: + adapt code to renaming of HTML constants (sb107) 2009-05-05 11:14:18 +0200 mav r271507 : #i101222# avoid warning 2009-05-05 10:27:23 +0200 mav r271505 : #i101426# send the modified() notification only when the document can be modified 2009-05-05 10:25:07 +0200 mav r271504 : #i101426# send the modified() notification only when the document is modified 2009-05-05 08:42:48 +0200 mav r271497 : CWS-TOOLING: rebase CWS fwk103 to trunk@271427 (milestone: DEV300:m47) 2009-04-30 13:32:11 +0200 mav r271412 : #i100518# check the template folders quietly 2009-04-29 20:04:25 +0200 mst r271393 : - sw/source/filter/html/swhtml.cxx: + fix wrong initialization order in constructor 2009-04-28 12:28:46 +0200 mav r271319 : #i99142# set the error correctly 2009-04-28 08:44:48 +0200 mav r271305 : #i99050# clear hidden flag if necessary 2009-04-28 08:40:10 +0200 mav r271304 : #i99050# avoid crash 2009-04-22 07:40:11 +0200 mav r271056 : #i101093# lets not affect the performance 2009-04-15 09:30:47 +0200 cd r270820 : #i99771# Fix warnings for gcc 4.4 2009-04-15 09:19:52 +0200 cd r270819 : #i99771# Fix warnings for gcc 4.4 2009-04-15 08:42:34 +0200 cd r270817 : #i99771# Fix warnings for gcc 4.4 2009-04-14 14:31:01 +0200 mav r270768 : #i99493# fix typo 2009-04-01 12:45:43 +0200 mst r270317 : fix #i100727# - svtools/inc/svtools/svparser.hxx, svtools/source/svrtf/svparser.cxx, sfx2/inc/sfx2/docfile.hxx, sfx2/source/doc/{objmisc.cxx,docfile.cxx}: + move SvKeyValue stuff from sfx2 to svtools - svtools/inc/svtools/parhtml.hxx, svtools/source/svhtml/parhtml.cxx, sfx2/inc/sfx2/sfxhtml.hxx, sfx2/source/bastyp/sfxhtml.cxx: + move ParseMetaOptions() and GetEncodingByMIME() from SfxHTMLParser (sfx2) to HTMLParser (svtools) + make HTMLParser::ParseMetaOptions() a virtual function + HTMLParser::ParseMetaOptions() calls GetExtendedCompatibilityTextEncoding() + new template method HTMLParser::AddMetaUserDefined() - svtools/source/svhtml/makefile.mk: + enable exceptions for parhtml.cxx - dbaccess/source/ui/misc/HtmlReader.cxx, sc/source/filter/html/htmlpars.cxx: + remove encoding related code duplication - sw/source/filter/html/{swhtml{.hxx,.cxx},htmlfld.cxx}: + new SwHTMLParser::AddMetaUserDefined() for import of DOCINFO field subtypes INFO[1-4] + do not use DocumentInfo for import of DOCINFO field subtypes INFO[1-4] 2009-03-31 17:01:35 +0200 mav r270288 : #i91214# fix typo 2009-03-31 15:19:41 +0200 mav r270285 : #i100123# allow to turn OOo locking mechanics off 2009-03-31 15:00:36 +0200 mav r270284 : #i100123# allow to turn OOo locking mechanics off 2009-03-31 12:19:13 +0200 mav r270270 : #i100123# taking the lock file over throws no exception 2009-03-30 13:57:21 +0200 mav r270227 : #i100351# fix the typo 2009-03-30 13:47:26 +0200 mav r270225 : #i99885# let OK be default button 2009-03-29 19:38:55 +0200 mav r270190 : CWS-TOOLING: rebase CWS fwk103 to trunk@270033 (milestone: DEV300:m45) 2009-03-16 16:39:48 +0100 mav r269558 : #i93558# convert the attributes as well 2009-03-13 15:35:55 +0100 mav r269488 : #i93558# improve manifest.xml parsing 2009-03-13 08:47:00 +0100 mav r269454 : #i96205# allow to remove password on SaveAs 2009-03-12 13:36:07 +0100 mav r269398 : #i91306# show special error in case of shared document 2009-03-12 13:33:35 +0100 mav r269397 : #i91306# introduce the new error-message 2009-03-12 11:40:42 +0100 mst r269378 : fix #i90877# - svtools/source/uno/unoevent.cxx: + use proper operator delete[] 2009-02-26 15:23:10 +0100 mav r268526 : #i91214# do not use ATL 2009-02-26 14:19:06 +0100 mav r268516 : #i98909# integrate the patch 2009-02-10 17:29:52 +0100 cd r267568 : #i98649# Make sure that we catch the NoSuchElementException when a module is not installed.
2009-06-16 16:15:54 +00:00
SetError( nErr, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) );
2000-09-18 16:15:01 +00:00
bRet = !IsError( nErr );
} while( sal_False );
SfxObjectShell::LoadFrom( rMedium );
2000-09-18 16:15:01 +00:00
pDoc->ResetModified();
return bRet;
}
void SwDocShell::SubInitNew()
{
ASSERT( !mxBasePool.is(), "wer hat seinen Pool nicht zerstoert?" );
mxBasePool = new SwDocStyleSheetPool( *pDoc, SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
2000-09-18 16:15:01 +00:00
UpdateFontList();
InitDraw();
pDoc->setLinkUpdateMode( GLOBALSETTING );
pDoc->setFieldUpdateFlags( AUTOUPD_GLOBALSETTING );
2000-09-18 16:15:01 +00:00
sal_Bool bWeb = ISA(SwWebDocShell);
sal_uInt16 nRange[] = {
RES_PARATR_ADJUST, RES_PARATR_ADJUST,
RES_CHRATR_COLOR, RES_CHRATR_COLOR,
RES_CHRATR_LANGUAGE, RES_CHRATR_LANGUAGE,
RES_CHRATR_CJK_LANGUAGE, RES_CHRATR_CJK_LANGUAGE,
RES_CHRATR_CTL_LANGUAGE, RES_CHRATR_CTL_LANGUAGE,
0, 0, 0 };
2000-09-18 16:15:01 +00:00
if(!bWeb)
{
nRange[ (sizeof(nRange)/sizeof(nRange[0])) - 3 ] = RES_PARATR_TABSTOP;
nRange[ (sizeof(nRange)/sizeof(nRange[0])) - 2 ] = RES_PARATR_HYPHENZONE;
2000-09-18 16:15:01 +00:00
}
SfxItemSet aDfltSet( pDoc->GetAttrPool(), nRange );
//! get lingu options without loading lingu DLL
SvtLinguOptions aLinguOpt;
2008-12-15 12:01:46 +00:00
SvtLinguConfig().GetOptions( aLinguOpt );
sal_Int16 nVal = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage, ::com::sun::star::i18n::ScriptType::LATIN),
eCJK = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CJK, ::com::sun::star::i18n::ScriptType::ASIAN),
eCTL = MsLangId::resolveSystemLanguageByScriptType(aLinguOpt.nDefaultLanguage_CTL, ::com::sun::star::i18n::ScriptType::COMPLEX);
2000-09-18 16:15:01 +00:00
aDfltSet.Put( SvxLanguageItem( nVal, RES_CHRATR_LANGUAGE ) );
aDfltSet.Put( SvxLanguageItem( eCJK, RES_CHRATR_CJK_LANGUAGE ) );
aDfltSet.Put( SvxLanguageItem( eCTL, RES_CHRATR_CTL_LANGUAGE ) );
2000-09-18 16:15:01 +00:00
if(!bWeb)
{
SvxHyphenZoneItem aHyp( (SvxHyphenZoneItem&) pDoc->GetDefault(
RES_PARATR_HYPHENZONE) );
aHyp.GetMinLead() = static_cast< BYTE >(aLinguOpt.nHyphMinLeading);
aHyp.GetMinTrail() = static_cast< BYTE >(aLinguOpt.nHyphMinTrailing);
2000-10-31 19:33:20 +00:00
2000-09-18 16:15:01 +00:00
aDfltSet.Put( aHyp );
sal_uInt16 nNewPos = static_cast< sal_uInt16 >(SW_MOD()->GetUsrPref(FALSE)->GetDefTab());
2000-09-18 16:15:01 +00:00
if( nNewPos )
aDfltSet.Put( SvxTabStopItem( 1, nNewPos,
SVX_TAB_ADJUST_DEFAULT, RES_PARATR_TABSTOP ) );
2000-09-18 16:15:01 +00:00
}
aDfltSet.Put( SvxColorItem( Color( COL_AUTO ), RES_CHRATR_COLOR ) );
2000-09-18 16:15:01 +00:00
pDoc->SetDefault( aDfltSet );
//default page mode for text grid
if(!bWeb)
{
sal_Bool bSquaredPageMode = SW_MOD()->GetUsrPref(FALSE)->IsSquaredPageMode();
pDoc->SetDefaultPageMode( bSquaredPageMode );
}
2000-09-18 16:15:01 +00:00
pDoc->ResetModified();
}
/*
* Document Interface Access
*/
IDocumentDeviceAccess* SwDocShell::getIDocumentDeviceAccess() { return pDoc; }
const IDocumentSettingAccess* SwDocShell::getIDocumentSettingAccess() const { return pDoc; }
IDocumentChartDataProviderAccess* SwDocShell::getIDocumentChartDataProviderAccess() { return pDoc; }
2000-09-18 16:15:01 +00:00