2000-09-18 16:15:01 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2005-09-09 05:30:44 +00:00
|
|
|
* $RCSfile: docshini.cxx,v $
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2007-05-22 15:37:27 +00:00
|
|
|
* $Revision: 1.60 $
|
2005-11-16 08:46:21 +00:00
|
|
|
*
|
2007-05-22 15:37:27 +00:00
|
|
|
* last change: $Author: vg $ $Date: 2007-05-22 16:37:27 $
|
2005-11-16 08:46:21 +00:00
|
|
|
*
|
2006-03-29 07:05:57 +00:00
|
|
|
* The Contents of this file are made available subject to
|
|
|
|
* the terms of GNU Lesser General Public License Version 2.1.
|
2005-11-16 08:46:21 +00:00
|
|
|
*
|
|
|
|
*
|
2006-03-29 07:05:57 +00:00
|
|
|
* GNU Lesser General Public License Version 2.1
|
|
|
|
* =============================================
|
|
|
|
* Copyright 2005 by Sun Microsystems, Inc.
|
|
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
2005-11-16 08:46:21 +00:00
|
|
|
*
|
2006-03-29 07:05:57 +00:00
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License version 2.1, as published by the Free Software Foundation.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2006-03-29 07:05:57 +00:00
|
|
|
* This library 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 for more details.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2006-03-29 07:05:57 +00:00
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
|
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
|
|
* MA 02111-1307 USA
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
2006-09-16 21:34:37 +00:00
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_sw.hxx"
|
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
#ifndef _HINTIDS_HXX
|
|
|
|
#include <hintids.hxx>
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef _SVX_DIALOGS_HRC
|
|
|
|
#include <svx/dialogs.hrc>
|
|
|
|
#endif
|
2007-05-10 15:13:50 +00:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
#ifndef _SOT_STORINFO_HXX
|
|
|
|
#include <sot/storinfo.hxx>
|
|
|
|
#endif
|
2004-10-04 18:24:40 +00:00
|
|
|
#include <sot/storage.hxx>
|
2000-09-18 16:15:01 +00:00
|
|
|
#ifndef _ZFORLIST_HXX //autogen
|
|
|
|
#include <svtools/zforlist.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _CTRLTOOL_HXX //autogen
|
|
|
|
#include <svtools/ctrltool.hxx>
|
|
|
|
#endif
|
2002-02-19 12:45:46 +00:00
|
|
|
#ifndef _SVTOOLS_LINGUCFG_HXX_
|
|
|
|
#include <svtools/lingucfg.hxx>
|
|
|
|
#endif
|
2000-09-18 16:15:01 +00:00
|
|
|
#ifndef _SFXDOCINF_HXX //autogen
|
|
|
|
#include <sfx2/docinf.hxx>
|
|
|
|
#endif
|
2000-10-31 19:33:20 +00:00
|
|
|
#ifndef _SFXDOCFILE_HXX
|
|
|
|
#include <sfx2/docfile.hxx>
|
|
|
|
#endif
|
2000-09-18 16:15:01 +00:00
|
|
|
#ifndef _OFA_MISCCFG_HXX //autogen
|
2004-02-03 15:33:13 +00:00
|
|
|
#include <svtools/misccfg.hxx>
|
2000-09-18 16:15:01 +00:00
|
|
|
#endif
|
|
|
|
#ifndef _SFX_PRINTER_HXX //autogen
|
|
|
|
#include <sfx2/printer.hxx>
|
|
|
|
#endif
|
2004-02-25 14:55:26 +00:00
|
|
|
#ifndef _SFX_BINDINGS_HXX //autogen
|
|
|
|
#include <sfx2/bindings.hxx>
|
|
|
|
#endif
|
2001-04-03 12:39:55 +00:00
|
|
|
#ifndef _SVX_ASIANCFG_HXX
|
|
|
|
#include <svx/asiancfg.hxx>
|
|
|
|
#endif
|
2000-11-20 08:16:31 +00:00
|
|
|
#ifndef _UNO_LINGU_HXX
|
|
|
|
#include <svx/unolingu.hxx>
|
|
|
|
#endif
|
2002-09-26 12:38:35 +00:00
|
|
|
#ifndef _SFXREQUEST_HXX
|
|
|
|
#include <sfx2/request.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SFXINTITEM_HXX
|
|
|
|
#include <svtools/intitem.hxx>
|
|
|
|
#endif
|
2003-03-27 14:45:43 +00:00
|
|
|
#ifndef _SVX_ADJITEM_HXX //autogen
|
|
|
|
#include <svx/adjitem.hxx>
|
|
|
|
#endif
|
2006-12-19 12:01:50 +00:00
|
|
|
#ifndef _SVX_AKRNTEM_HXX
|
|
|
|
#include <svx/akrnitem.hxx>
|
|
|
|
#endif
|
2000-11-19 10:41:10 +00:00
|
|
|
#ifndef _LINGUISTIC_LNGPROPS_HHX_
|
|
|
|
#include <linguistic/lngprops.hxx>
|
2000-09-18 16:15:01 +00:00
|
|
|
#endif
|
2002-09-26 12:38:35 +00:00
|
|
|
#ifndef _COM_SUN_STAR_DOCUMENT_UPDATEDOCMODE_HPP_
|
|
|
|
#include <com/sun/star/document/UpdateDocMode.hpp>
|
|
|
|
#endif
|
2001-07-23 16:20:51 +00:00
|
|
|
#ifndef _RTL_LOGFILE_HXX_
|
|
|
|
#include <rtl/logfile.hxx>
|
|
|
|
#endif
|
2000-09-18 16:15:01 +00:00
|
|
|
#ifndef _SFX_DOCFILT_HACK_HXX //autogen
|
|
|
|
#include <sfx2/docfilt.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _XTABLE_HXX //autogen
|
|
|
|
#include <svx/xtable.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SVX_DRAWITEM_HXX //autogen
|
2007-05-10 15:13:50 +00:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
#include <svx/drawitem.hxx>
|
|
|
|
#endif
|
2005-11-16 08:46:21 +00:00
|
|
|
#ifndef _SVX_FHGTITEM_HXX
|
|
|
|
#include <svx/fhgtitem.hxx>
|
|
|
|
#endif
|
2000-09-18 16:15:01 +00:00
|
|
|
#ifndef _SVX_FONTITEM_HXX //autogen
|
|
|
|
#include <svx/fontitem.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SVX_FLSTITEM_HXX //autogen
|
|
|
|
#include <svx/flstitem.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SVX_TSTPITEM_HXX //autogen
|
|
|
|
#include <svx/tstpitem.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SVX_LANGITEM_HXX //autogen
|
|
|
|
#include <svx/langitem.hxx>
|
|
|
|
#endif
|
2002-03-12 11:33:39 +00:00
|
|
|
#ifndef _SVX_COLRITEM_HXX //autogen
|
|
|
|
#include <svx/colritem.hxx>
|
|
|
|
#endif
|
2000-09-18 16:15:01 +00:00
|
|
|
#ifndef _SVX_HYZNITEM_HXX //autogen
|
|
|
|
#include <svx/hyznitem.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _MySVXACORR_HXX //autogen
|
|
|
|
#include <svx/svxacorr.hxx>
|
|
|
|
#endif
|
|
|
|
|
2004-02-03 15:33:13 +00:00
|
|
|
#include <vcl/svapp.hxx>
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2004-02-25 14:55:26 +00:00
|
|
|
#ifndef _SWVIEW_HXX
|
|
|
|
#include <view.hxx>
|
|
|
|
#endif
|
2001-05-10 07:48:50 +00:00
|
|
|
#ifndef _PRTOPT_HXX
|
|
|
|
#include <prtopt.hxx>
|
|
|
|
#endif
|
2000-09-18 16:15:01 +00:00
|
|
|
#ifndef _FMTCOL_HXX //autogen
|
|
|
|
#include <fmtcol.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _DOCSH_HXX
|
|
|
|
#include <docsh.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _WDOCSH_HXX
|
|
|
|
#include <wdocsh.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SWMODULE_HXX
|
|
|
|
#include <swmodule.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _DOC_HXX
|
|
|
|
#include <doc.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _DOCFAC_HXX
|
|
|
|
#include <docfac.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _DOCSTYLE_HXX
|
|
|
|
#include <docstyle.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SHELLIO_HXX
|
|
|
|
#include <shellio.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _TOX_HXX
|
|
|
|
#include <tox.hxx>
|
|
|
|
#endif
|
2001-03-23 14:55:45 +00:00
|
|
|
#ifndef _SWDTFLVR_HXX
|
|
|
|
#include <swdtflvr.hxx>
|
2000-09-18 16:15:01 +00:00
|
|
|
#endif
|
|
|
|
#ifndef _DBMGR_HXX
|
|
|
|
#include <dbmgr.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _USRPREF_HXX
|
|
|
|
#include <usrpref.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _FONTCFG_HXX
|
|
|
|
#include <fontcfg.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _POOLFMT_HXX
|
|
|
|
#include <poolfmt.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _MODCFG_HXX
|
|
|
|
#include <modcfg.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _GLOBDOC_HXX
|
|
|
|
#include <globdoc.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _NDOLE_HXX
|
|
|
|
#include <ndole.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _MDIEXP_HXX
|
|
|
|
#include <mdiexp.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _UNOTXDOC_HXX
|
|
|
|
#include <unotxdoc.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _LINKENUM_HXX
|
|
|
|
#include <linkenum.hxx>
|
|
|
|
#endif
|
|
|
|
#ifndef _SWWAIT_HXX
|
|
|
|
#include <swwait.hxx>
|
|
|
|
#endif
|
2004-02-25 14:55:26 +00:00
|
|
|
#ifndef _WRTSH_HXX
|
|
|
|
#include <wrtsh.hxx>
|
|
|
|
#endif
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
#ifndef _SWSWERROR_H
|
|
|
|
#include <swerror.h>
|
|
|
|
#endif
|
|
|
|
#ifndef _GLOBALS_HRC
|
|
|
|
#include <globals.hrc>
|
|
|
|
#endif
|
|
|
|
|
2003-04-08 14:33:17 +00:00
|
|
|
// #107253#
|
|
|
|
#ifndef _SWLINGUCONFIG_HXX
|
|
|
|
#include <swlinguconfig.hxx>
|
|
|
|
#endif
|
|
|
|
|
2004-02-02 17:37:54 +00:00
|
|
|
// #i18732#
|
|
|
|
#ifndef _FMTFOLLOWTEXTFLOW_HXX
|
|
|
|
#include <fmtfollowtextflow.hxx>
|
|
|
|
#endif
|
|
|
|
|
2007-05-22 15:37:27 +00:00
|
|
|
#include <unochart.hxx>
|
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2001-04-03 12:39:55 +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 namespace ::rtl;
|
2001-04-03 12:39:55 +00:00
|
|
|
#define C2U(cChar) OUString::createFromAscii(cChar)
|
2000-09-18 16:15:01 +00:00
|
|
|
/*-----------------21.09.96 15.29-------------------
|
|
|
|
|
|
|
|
--------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------
|
|
|
|
Beschreibung: Document laden
|
|
|
|
--------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
2004-10-04 18:24:40 +00:00
|
|
|
sal_Bool SwDocShell::InitNew( const uno::Reference < embed::XStorage >& xStor )
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
2001-07-31 15:51:57 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDocShell::InitNew" );
|
2001-07-23 16:20:51 +00:00
|
|
|
|
2004-10-04 18:24:40 +00:00
|
|
|
sal_Bool bRet = SfxObjectShell::InitNew( xStor );
|
2001-11-20 15:16:00 +00:00
|
|
|
ASSERT( GetMapUnit() == MAP_TWIP, "map unit is not twip!" );
|
2001-10-19 11:45:38 +00:00
|
|
|
sal_Bool bHTMLTemplSet = sal_False;
|
2000-09-18 16:15:01 +00:00
|
|
|
if( bRet )
|
|
|
|
{
|
2003-03-27 14:45:43 +00:00
|
|
|
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 )
|
2001-10-19 11:45:38 +00:00
|
|
|
bHTMLTemplSet = SetHTMLTemplate( *GetDoc() );//Styles aus HTML.vor
|
2000-09-18 16:15:01 +00:00
|
|
|
else if( ISA( SwGlobalDocShell ) )
|
2006-08-14 16:26:41 +00:00
|
|
|
GetDoc()->set(IDocumentSettingAccess::GLOBAL_DOCUMENT, true); // Globaldokument
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2001-07-27 07:01:47 +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 )
|
2004-10-04 18:24:40 +00:00
|
|
|
SwTransferable::InitOle( this, *pDoc );
|
|
|
|
|
2001-07-27 07:01:47 +00:00
|
|
|
// 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]);
|
2006-08-14 16:26:41 +00:00
|
|
|
pDoc->setForbiddenCharacters( eLang, aForbidden);
|
2001-07-27 07:01:47 +00:00
|
|
|
}
|
|
|
|
}
|
2006-08-14 16:26:41 +00:00
|
|
|
pDoc->set(IDocumentSettingAccess::KERN_ASIAN_PUNCTUATION,
|
|
|
|
!aAsian.IsKerningWesternTextOnly());
|
|
|
|
pDoc->setCharacterCompressionType(static_cast<SwCharCompressType>(aAsian.GetCharDistanceCompression()));
|
|
|
|
pDoc->setPrintData(*SW_MOD()->GetPrtOptions(bWeb));
|
2001-07-27 07:01:47 +00:00
|
|
|
|
|
|
|
SubInitNew();
|
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
// fuer alle
|
|
|
|
|
|
|
|
SwStdFontConfig* pStdFont = SW_MOD()->GetStdFontConfig();
|
2006-08-14 16:26:41 +00:00
|
|
|
SfxPrinter* pPrt = pDoc->getPrinter( false );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
String sEntry;
|
2002-06-24 08:10:32 +00:00
|
|
|
USHORT aFontWhich[] =
|
|
|
|
{ RES_CHRATR_FONT,
|
|
|
|
RES_CHRATR_CJK_FONT,
|
|
|
|
RES_CHRATR_CTL_FONT
|
|
|
|
};
|
2005-11-16 08:46:21 +00:00
|
|
|
USHORT aFontHeightWhich[] =
|
|
|
|
{
|
|
|
|
RES_CHRATR_FONTSIZE,
|
|
|
|
RES_CHRATR_CJK_FONTSIZE,
|
|
|
|
RES_CHRATR_CTL_FONTSIZE
|
|
|
|
};
|
2002-06-24 08:10:32 +00:00
|
|
|
USHORT aFontIds[] =
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
2002-06-24 08:10:32 +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
|
|
|
|
};
|
2003-03-27 14:45:43 +00:00
|
|
|
USHORT aLangTypes[] =
|
|
|
|
{
|
|
|
|
RES_CHRATR_LANGUAGE,
|
|
|
|
RES_CHRATR_CJK_LANGUAGE,
|
|
|
|
RES_CHRATR_CTL_LANGUAGE
|
|
|
|
};
|
2002-09-24 13:07:39 +00:00
|
|
|
|
2002-06-24 08:10:32 +00:00
|
|
|
for(USHORT i = 0; i < 3; i++)
|
|
|
|
{
|
|
|
|
USHORT nFontWhich = aFontWhich[i];
|
|
|
|
USHORT nFontId = aFontIds[i];
|
2001-07-27 07:01:47 +00:00
|
|
|
SvxFontItem* pFontItem = 0;
|
2005-11-16 08:46:21 +00:00
|
|
|
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;
|
|
|
|
}
|
2001-07-27 07:01:47 +00:00
|
|
|
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
|
|
|
}
|
2001-07-27 07:01:47 +00:00
|
|
|
else
|
|
|
|
{
|
2003-04-17 09:15:43 +00:00
|
|
|
// #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
|
|
|
|
2001-07-27 07:01:47 +00:00
|
|
|
Font aLangDefFont = OutputDevice::GetDefaultFont(
|
2002-09-24 13:07:39 +00:00
|
|
|
nFontTypes[i],
|
2003-04-17 09:15:43 +00:00
|
|
|
eLanguage,
|
2001-07-27 07:01:47 +00:00
|
|
|
DEFAULTFONT_FLAGS_ONLYONE );
|
|
|
|
pFontItem = new SvxFontItem(aLangDefFont.GetFamily(), aLangDefFont.GetName(),
|
|
|
|
aEmptyStr, aLangDefFont.GetPitch(), aLangDefFont.GetCharSet(), nFontWhich);
|
|
|
|
}
|
|
|
|
pDoc->SetDefault(*pFontItem);
|
2001-10-19 11:45:38 +00:00
|
|
|
if( !bHTMLTemplSet )
|
|
|
|
{
|
|
|
|
SwTxtFmtColl *pColl = pDoc->GetTxtCollFromPool(RES_POOLCOLL_STANDARD);
|
|
|
|
pColl->ResetAttr(nFontWhich);
|
|
|
|
}
|
2001-07-27 07:01:47 +00:00
|
|
|
delete pFontItem;
|
2005-11-16 08:46:21 +00:00
|
|
|
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->ResetAttr(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;
|
2005-11-16 08:46:21 +00:00
|
|
|
USHORT nFontHeightWhich = RES_CHRATR_FONTSIZE;
|
|
|
|
LanguageType eLanguage = static_cast<const SvxLanguageItem&>(pDoc->GetDefault( RES_CHRATR_LANGUAGE )).GetLanguage();
|
2002-08-20 12:34:44 +00:00
|
|
|
for(USHORT 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)
|
2005-11-16 08:46:21 +00:00
|
|
|
{
|
2001-05-11 09:37:23 +00:00
|
|
|
nFontWhich = RES_CHRATR_CJK_FONT;
|
2005-11-16 08:46:21 +00:00
|
|
|
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)
|
2005-11-16 08:46:21 +00:00
|
|
|
{
|
2002-08-20 12:34:44 +00:00
|
|
|
nFontWhich = RES_CHRATR_CTL_FONT;
|
2005-11-16 08:46:21 +00:00
|
|
|
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;
|
|
|
|
}
|
2005-11-16 08:46:21 +00:00
|
|
|
pColl = pDoc->GetTxtCollFromPool(aFontIdPoolId[nIdx + 1]);
|
2001-10-19 11:45:38 +00:00
|
|
|
if( !bHTMLTemplSet ||
|
|
|
|
SFX_ITEM_SET != pColl->GetAttrSet().GetItemState(
|
|
|
|
nFontWhich, sal_False ) )
|
|
|
|
{
|
|
|
|
pColl->SetAttr(SvxFontItem(pFnt->GetFamily(), pFnt->GetName(),
|
|
|
|
aEmptyStr, pFnt->GetPitch(), pFnt->GetCharSet(), nFontWhich));
|
|
|
|
}
|
2001-05-11 09:37:23 +00:00
|
|
|
if(bDelete)
|
|
|
|
{
|
|
|
|
delete (SfxFont*) pFnt;
|
|
|
|
}
|
|
|
|
}
|
2005-11-16 08:46:21 +00:00
|
|
|
sal_Int32 nFontHeight = pStdFont->GetFontHeight( 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->GetAttr( nFontHeightWhich, sal_True ));
|
|
|
|
if(aFontHeight.GetHeight() != nFontHeight)
|
|
|
|
{
|
|
|
|
aFontHeight.SetHeight(nFontHeight);
|
|
|
|
pColl->SetAttr( aFontHeight );
|
|
|
|
}
|
2000-09-18 16:15:01 +00:00
|
|
|
}
|
|
|
|
}
|
2003-06-10 12:20:21 +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()) )
|
2007-05-10 15:13:50 +00:00
|
|
|
pDoc->SetDefault( SvxAdjustItem(SVX_ADJUST_RIGHT, RES_PARATR_ADJUST ) );
|
2003-06-10 12:20:21 +00:00
|
|
|
|
2004-02-02 17:37:54 +00:00
|
|
|
// 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 ) );
|
|
|
|
|
2004-07-12 12:37:05 +00:00
|
|
|
// --> collapsing borders FME 2005-05-27 #i29550#
|
|
|
|
pDoc->SetDefault( SfxBoolItem( RES_COLLAPSING_BORDERS, TRUE ) );
|
|
|
|
// <-- collapsing
|
|
|
|
|
2006-12-19 12:01:50 +00:00
|
|
|
//#i16874# AutoKerning as default for new documents
|
2007-05-10 15:13:50 +00:00
|
|
|
pDoc->SetDefault( SvxAutoKernItem( sal_True, RES_CHRATR_AUTOKERN ) );
|
2006-12-19 12:01:50 +00:00
|
|
|
|
2005-03-08 12:48:25 +00:00
|
|
|
// --> 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) :
|
|
|
|
pDoc(0),
|
|
|
|
pBasePool(0),
|
|
|
|
pFontList(0),
|
|
|
|
SfxObjectShell ( eMode ),
|
|
|
|
pView( 0 ),
|
2002-09-26 12:38:35 +00:00
|
|
|
pWrtShell( 0 ),
|
2004-10-04 18:24:40 +00:00
|
|
|
pOLEChildList( 0 ),
|
2004-03-19 11:57:45 +00:00
|
|
|
nUpdateDocMode(document::UpdateDocMode::ACCORDING_TO_CONFIG),
|
|
|
|
bInUpdateFontList(false)
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
2001-07-31 15:51:57 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDocShell::SwDocShell" );
|
2001-09-10 13:38:02 +00:00
|
|
|
Init_Impl();
|
2000-09-18 16:15:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------
|
|
|
|
Beschreibung: Ctor / Dtor
|
|
|
|
--------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
|
|
SwDocShell::SwDocShell( SwDoc *pD, SfxObjectCreateMode eMode ):
|
|
|
|
pDoc(pD),
|
|
|
|
pBasePool(0),
|
|
|
|
pFontList(0),
|
|
|
|
SfxObjectShell ( eMode ),
|
|
|
|
pView( 0 ),
|
2002-09-26 12:38:35 +00:00
|
|
|
pWrtShell( 0 ),
|
2004-10-04 18:24:40 +00:00
|
|
|
pOLEChildList( 0 ),
|
2004-03-19 11:57:45 +00:00
|
|
|
nUpdateDocMode(document::UpdateDocMode::ACCORDING_TO_CONFIG),
|
|
|
|
bInUpdateFontList(false)
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
2001-07-31 15:51:57 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDocShell::SwDocShell" );
|
2001-09-10 13:38:02 +00:00
|
|
|
Init_Impl();
|
2000-09-18 16:15:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------
|
|
|
|
Beschreibung: Dtor
|
|
|
|
--------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
|
|
SwDocShell::~SwDocShell()
|
|
|
|
{
|
2007-05-22 15:37:27 +00:00
|
|
|
// 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.
|
2004-02-03 15:33:13 +00:00
|
|
|
if((void*)pTable != (void*)(XColorTable::GetStdColorTable()) )
|
2000-09-18 16:15:01 +00:00
|
|
|
delete pTable;
|
|
|
|
}
|
2004-10-04 18:24:40 +00:00
|
|
|
|
|
|
|
delete pOLEChildList;
|
2000-09-18 16:15:01 +00:00
|
|
|
}
|
2001-09-10 13:38:02 +00:00
|
|
|
/* -----------------------------10.09.2001 15:59------------------------------
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2001-09-10 13:38:02 +00:00
|
|
|
---------------------------------------------------------------------------*/
|
|
|
|
void SwDocShell::Init_Impl()
|
|
|
|
{
|
2002-06-21 13:26:22 +00:00
|
|
|
SetPool(&SW_MOD()->GetPool());
|
2001-09-10 13:38:02 +00:00
|
|
|
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);
|
2001-11-20 15:16:00 +00:00
|
|
|
|
|
|
|
// set map unit to twip
|
|
|
|
SetMapUnit( MAP_TWIP );
|
2001-09-10 13:38:02 +00:00
|
|
|
}
|
2000-09-18 16:15:01 +00:00
|
|
|
/*--------------------------------------------------------------------
|
|
|
|
Beschreibung: AddLink
|
|
|
|
--------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
|
|
|
void SwDocShell::AddLink()
|
|
|
|
{
|
|
|
|
if( !pDoc )
|
|
|
|
{
|
|
|
|
SwDocFac aFactory;
|
|
|
|
pDoc = aFactory.GetDoc();
|
2006-08-14 16:26:41 +00:00
|
|
|
pDoc->acquire();
|
|
|
|
pDoc->set(IDocumentSettingAccess::HTML_MODE, ISA(SwWebDocShell) );
|
2000-09-18 16:15:01 +00:00
|
|
|
}
|
|
|
|
else
|
2006-08-14 16:26:41 +00:00
|
|
|
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()
|
|
|
|
{
|
2004-03-19 11:57:45 +00:00
|
|
|
if(!bInUpdateFontList)
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
2004-03-19 11:57:45 +00:00
|
|
|
bInUpdateFontList = true;
|
|
|
|
ASSERT(pDoc, "Kein Doc keine FontList");
|
|
|
|
if( pDoc )
|
|
|
|
{
|
|
|
|
delete pFontList;
|
2006-08-14 16:26:41 +00:00
|
|
|
pFontList = new FontList( pDoc->getReferenceDevice( true ) );
|
2004-03-19 11:57:45 +00:00
|
|
|
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)
|
|
|
|
{
|
|
|
|
DELETEZ(pBasePool);
|
2006-08-14 16:26:41 +00:00
|
|
|
sal_Int8 nRefCt = 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
|
|
|
|
--------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
2005-01-11 11:38:51 +00:00
|
|
|
sal_Bool SwDocShell::Load( SfxMedium& rMedium )
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
2001-07-31 15:51:57 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_AUTHOR( aLog, "SW", "JP93722", "SwDocShell::Load" );
|
2000-09-18 16:15:01 +00:00
|
|
|
sal_Bool bRet = sal_False;
|
2005-01-11 11:38:51 +00:00
|
|
|
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
|
2001-02-01 13:30:13 +00:00
|
|
|
ASSERT( !pBasePool, "wer hat seinen Pool nicht zerstoert?" );
|
|
|
|
pBasePool = new SwDocStyleSheetPool( *pDoc,
|
|
|
|
SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
|
2002-09-26 12:38:35 +00:00
|
|
|
if(GetCreateMode() != SFX_CREATE_MODE_ORGANIZER)
|
|
|
|
{
|
2005-01-11 11:38:51 +00:00
|
|
|
SFX_ITEMSET_ARG( rMedium.GetItemSet(), pUpdateDocItem, SfxUInt16Item, SID_UPDATEDOCMODE, sal_False);
|
2002-09-26 12:38:35 +00:00
|
|
|
nUpdateDocMode = pUpdateDocItem ? pUpdateDocItem->GetValue() : com::sun::star::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
|
|
|
{
|
2003-03-27 14:45:43 +00:00
|
|
|
if( ReadXML )
|
2001-03-06 10:17:30 +00:00
|
|
|
{
|
2003-03-27 14:45:43 +00:00
|
|
|
ReadXML->SetOrganizerMode( TRUE );
|
2005-01-11 11:38:51 +00:00
|
|
|
SwReader aRdr( rMedium, aEmptyStr, pDoc );
|
2003-03-27 14:45:43 +00:00
|
|
|
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:
|
2001-02-01 13:30:13 +00:00
|
|
|
{
|
|
|
|
// fuer MWERKS (Mac-Compiler): kann nicht selbststaendig casten
|
2004-10-04 18:24:40 +00:00
|
|
|
SwTransferable::InitOle( this, *pDoc );
|
2001-02-01 13:30:13 +00:00
|
|
|
}
|
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:
|
|
|
|
{
|
2004-10-04 18:24:40 +00:00
|
|
|
Reader *pReader = ReadXML;
|
2001-02-01 13:30:13 +00:00
|
|
|
if( pReader )
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
2001-02-01 13:30:13 +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" );
|
2005-01-11 11:38:51 +00:00
|
|
|
SwReader aRdr( rMedium, aEmptyStr, pDoc );
|
2001-07-23 16:20:51 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_TRACE( aLog, "before Read" );
|
2001-02-01 13:30:13 +00:00
|
|
|
nErr = aRdr.Read( *pReader );
|
2001-07-23 16:20:51 +00:00
|
|
|
RTL_LOGFILE_CONTEXT_TRACE( aLog, "after Read" );
|
2001-02-26 06:56:31 +00:00
|
|
|
|
|
|
|
// 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 ) )
|
|
|
|
{
|
2006-08-14 16:26:41 +00:00
|
|
|
if( !pDoc->get(IDocumentSettingAccess::HTML_MODE) )
|
|
|
|
pDoc->set(IDocumentSettingAccess::HTML_MODE, true);
|
2001-02-26 06:56:31 +00:00
|
|
|
}
|
|
|
|
if( ISA( SwGlobalDocShell ) )
|
|
|
|
{
|
2006-08-14 16:26:41 +00:00
|
|
|
if( !pDoc->get(IDocumentSettingAccess::GLOBAL_DOCUMENT) )
|
|
|
|
pDoc->set(IDocumentSettingAccess::GLOBAL_DOCUMENT, true);
|
2001-02-26 06:56:31 +00:00
|
|
|
}
|
2000-09-18 16:15:01 +00:00
|
|
|
}
|
|
|
|
#ifndef PRODUCT
|
2001-02-01 13:30:13 +00:00
|
|
|
else
|
|
|
|
ASSERT( !this, "ohne Sw3Reader geht nichts" );
|
2000-09-18 16:15:01 +00:00
|
|
|
#endif
|
2001-02-01 13:30:13 +00:00
|
|
|
}
|
2000-09-18 16:15:01 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
#ifndef PRODUCT
|
|
|
|
default:
|
|
|
|
ASSERT( !this, "Load: new CreateMode?" );
|
|
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
UpdateFontList();
|
|
|
|
InitDraw();
|
|
|
|
|
|
|
|
SetError( nErr );
|
|
|
|
bRet = !IsError( nErr );
|
|
|
|
|
2006-12-01 13:27:50 +00:00
|
|
|
// --> 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 );
|
|
|
|
}
|
2004-10-04 18:24:40 +00:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
return bRet;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*--------------------------------------------------------------------
|
|
|
|
Beschreibung:
|
|
|
|
--------------------------------------------------------------------*/
|
|
|
|
|
|
|
|
|
2005-01-11 11:38:51 +00:00
|
|
|
sal_Bool SwDocShell::LoadFrom( SfxMedium& rMedium )
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
2001-07-31 15:51:57 +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;
|
2004-10-04 18:24:40 +00:00
|
|
|
//const String& rNm = pStor->GetName();
|
2001-03-06 10:17:30 +00:00
|
|
|
String aStreamName;
|
2004-10-04 18:24:40 +00:00
|
|
|
aStreamName = String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM("styles.xml"));
|
2005-01-11 11:38:51 +00:00
|
|
|
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
|
2003-03-27 14:45:43 +00:00
|
|
|
SwWait aWait( *this, sal_True );
|
2001-03-06 10:17:30 +00:00
|
|
|
{
|
2003-03-27 14:45:43 +00:00
|
|
|
ASSERT( !pBasePool, "wer hat seinen Pool nicht zerstoert?" );
|
|
|
|
pBasePool = new SwDocStyleSheetPool( *pDoc,
|
|
|
|
SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
|
|
|
|
if( ReadXML )
|
2001-03-06 10:17:30 +00:00
|
|
|
{
|
2003-03-27 14:45:43 +00:00
|
|
|
ReadXML->SetOrganizerMode( TRUE );
|
2005-01-11 11:38:51 +00:00
|
|
|
SwReader aRdr( rMedium, aEmptyStr, pDoc );
|
2003-03-27 14:45:43 +00:00
|
|
|
nErr = aRdr.Read( *ReadXML );
|
|
|
|
ReadXML->SetOrganizerMode( FALSE );
|
2001-03-06 10:17:30 +00:00
|
|
|
}
|
|
|
|
}
|
2000-09-18 16:15:01 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2004-10-04 18:24:40 +00:00
|
|
|
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 );
|
|
|
|
}
|
2004-10-04 18:24:40 +00:00
|
|
|
*/
|
2001-03-06 10:17:30 +00:00
|
|
|
}
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
SetError( nErr );
|
|
|
|
bRet = !IsError( nErr );
|
|
|
|
|
|
|
|
} while( sal_False );
|
|
|
|
|
2005-01-11 11:38:51 +00:00
|
|
|
SfxObjectShell::LoadFrom( rMedium );
|
2000-09-18 16:15:01 +00:00
|
|
|
pDoc->ResetModified();
|
|
|
|
return bRet;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwDocShell::SubInitNew()
|
|
|
|
{
|
|
|
|
ASSERT( !pBasePool, "wer hat seinen Pool nicht zerstoert?" );
|
|
|
|
pBasePool = new SwDocStyleSheetPool( *pDoc,
|
|
|
|
SFX_CREATE_MODE_ORGANIZER == GetCreateMode() );
|
|
|
|
UpdateFontList();
|
|
|
|
InitDraw();
|
|
|
|
|
2006-08-14 16:26:41 +00:00
|
|
|
pDoc->setLinkUpdateMode( GLOBALSETTING );
|
|
|
|
pDoc->setFieldUpdateFlags( AUTOUPD_GLOBALSETTING );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
sal_Bool bWeb = ISA(SwWebDocShell);
|
|
|
|
|
|
|
|
sal_uInt16 nRange[] = {
|
2003-03-27 14:45:43 +00:00
|
|
|
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)
|
|
|
|
{
|
2002-03-12 11:33:39 +00:00
|
|
|
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 );
|
|
|
|
|
2002-02-19 12:45:46 +00:00
|
|
|
//! get lingu options without loading lingu DLL
|
|
|
|
SvtLinguOptions aLinguOpt;
|
2003-04-08 14:33:17 +00:00
|
|
|
|
|
|
|
// #107253# Replaced SvtLinguConfig with SwLinguConfig wrapper with UsageCount
|
|
|
|
SwLinguConfig().GetOptions( aLinguOpt );
|
2002-02-19 12:45:46 +00:00
|
|
|
|
|
|
|
sal_Int16 nVal = aLinguOpt.nDefaultLanguage,
|
|
|
|
eCJK = aLinguOpt.nDefaultLanguage_CJK,
|
|
|
|
eCTL = aLinguOpt.nDefaultLanguage_CTL;
|
2000-09-18 16:15:01 +00:00
|
|
|
aDfltSet.Put( SvxLanguageItem( nVal, RES_CHRATR_LANGUAGE ) );
|
2001-04-03 12:39:55 +00:00
|
|
|
aDfltSet.Put( SvxLanguageItem( eCJK, RES_CHRATR_CJK_LANGUAGE ) );
|
|
|
|
aDfltSet.Put( SvxLanguageItem( eCTL, RES_CHRATR_CTL_LANGUAGE ) );
|
2002-08-12 11:43:20 +00:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
if(!bWeb)
|
|
|
|
{
|
|
|
|
SvxHyphenZoneItem aHyp( (SvxHyphenZoneItem&) pDoc->GetDefault(
|
|
|
|
RES_PARATR_HYPHENZONE) );
|
2002-02-19 12:45:46 +00:00
|
|
|
aHyp.GetMinLead() = aLinguOpt.nHyphMinLeading;
|
|
|
|
aHyp.GetMinTrail() = aLinguOpt.nHyphMinTrailing;
|
2000-10-31 19:33:20 +00:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
aDfltSet.Put( aHyp );
|
|
|
|
|
2000-09-28 14:25:03 +00:00
|
|
|
sal_uInt16 nNewPos = SW_MOD()->GetUsrPref(FALSE)->GetDefTab();
|
2000-09-18 16:15:01 +00:00
|
|
|
if( nNewPos )
|
|
|
|
aDfltSet.Put( SvxTabStopItem( 1, nNewPos,
|
2007-05-10 15:13:50 +00:00
|
|
|
SVX_TAB_ADJUST_DEFAULT, RES_PARATR_TABSTOP ) );
|
2000-09-18 16:15:01 +00:00
|
|
|
}
|
2002-03-12 11:33:39 +00:00
|
|
|
aDfltSet.Put( SvxColorItem( Color( COL_AUTO ), RES_CHRATR_COLOR ) );
|
2003-03-27 14:45:43 +00:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
pDoc->SetDefault( aDfltSet );
|
|
|
|
pDoc->ResetModified();
|
|
|
|
}
|
|
|
|
|
2006-08-14 16:26:41 +00:00
|
|
|
/*
|
|
|
|
* Document Interface Access
|
|
|
|
*/
|
|
|
|
IDocumentDeviceAccess* SwDocShell::getIDocumentDeviceAccess() { return pDoc; }
|
|
|
|
const IDocumentSettingAccess* SwDocShell::getIDocumentSettingAccess() const { return pDoc; }
|
2007-05-22 15:37:27 +00:00
|
|
|
IDocumentChartDataProviderAccess* SwDocShell::getIDocumentChartDataProviderAccess() { return pDoc; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|