2000-09-18 23:16:46 +00:00
/*************************************************************************
*
* $ RCSfile : drawdoc . cxx , v $
*
2004-11-03 07:53:14 +00:00
* $ Revision : 1.72 $
2000-09-18 23:16:46 +00:00
*
2004-11-03 07:53:14 +00:00
* last change : $ Author : pjunck $ $ Date : 2004 - 11 - 03 08 : 53 : 14 $
2000-09-18 23:16:46 +00:00
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc . , October , 2000
*
* GNU Lesser General Public License Version 2.1
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* Copyright 2000 by Sun Microsystems , Inc .
* 901 San Antonio Road , Palo Alto , CA 94303 , USA
*
* 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 .
*
* 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 .
*
* 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
*
*
* Sun Industry Standards Source License Version 1.1
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 ( the " License " ) ; You may not use this file
* except in compliance with the License . You may obtain a copy of the
* License at http : //www.openoffice.org/license.html.
*
* Software provided under this License is provided on an " AS IS " basis ,
* WITHOUT WARRANTY OF ANY KIND , EITHER EXPRESSED OR IMPLIED , INCLUDING ,
* WITHOUT LIMITATION , WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS ,
* MERCHANTABLE , FIT FOR A PARTICULAR PURPOSE , OR NON - INFRINGING .
* See the License for the specific provisions governing your rights and
* obligations concerning the Software .
*
* The Initial Developer of the Original Code is : Sun Microsystems , Inc .
*
* Copyright : 2000 by Sun Microsystems , Inc .
*
* All Rights Reserved .
*
* Contributor ( s ) : _______________________________________
*
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# define ITEMID_SEARCH SID_SEARCH_ITEM
2004-01-20 09:25:48 +00:00
# include "PageListWatcher.hxx"
2003-03-27 09:58:12 +00:00
# ifndef _COM_SUN_STAR_TEXT_WRITINGMODE_HPP_
# include <com/sun/star/text/WritingMode.hpp>
# endif
2003-04-24 13:35:54 +00:00
# ifndef _COM_SUN_STAR_DOCUMENT_PRINTERINDEPENDENTLAYOUT_HPP_
# include <com/sun/star/document/PrinterIndependentLayout.hpp>
# endif
2003-03-27 09:58:12 +00:00
2001-04-06 13:17:19 +00:00
# ifndef _FORBIDDENCHARACTERSTABLE_HXX
# include <svx/forbiddencharacterstable.hxx>
# endif
2000-09-18 23:16:46 +00:00
# include <svx/svxids.hrc>
# include <svx/srchitem.hxx>
2003-12-01 09:07:08 +00:00
# include <svx/eeitem.hxx>
# define ITEMID_SCRIPTSPACE EE_PARA_ASIANCJKSPACING
# include <svx/scriptspaceitem.hxx>
2000-09-18 23:16:46 +00:00
# ifndef _OFA_MISCCFG_HXX
2004-02-03 19:10:21 +00:00
# include <svtools/misccfg.hxx>
2000-09-18 23:16:46 +00:00
# endif
# ifndef _SFX_PRINTER_HXX //autogen
# include <sfx2/printer.hxx>
# endif
# ifndef _SFX_TOPFRM_HXX //autogen wg. SfxTopViewFrame
# include <sfx2/topfrm.hxx>
# endif
# include <sfx2/app.hxx>
# include <svx/linkmgr.hxx>
# include <svx/dialogs.hrc>
2004-01-20 09:25:48 +00:00
# ifndef SD_OUTLINER_HXX
# include "Outliner.hxx"
# endif
2000-09-18 23:16:46 +00:00
# include "app.hxx"
# ifndef _EEITEM_HXX //autogen
# include <svx/eeitem.hxx>
# endif
# ifndef _EEITEMID_HXX //autogen
# include <svx/eeitemid.hxx>
# endif
# ifndef _EDITSTAT_HXX //autogen
# include <svx/editstat.hxx>
# endif
# ifndef _SVX_FONTITEM_HXX //autogen
# include <svx/fontitem.hxx>
# endif
# ifndef _SFXFLAGITEM_HXX //autogen
# include <svtools/flagitem.hxx>
# endif
# ifndef _SVDOATTR_HXX //autogen
# include <svx/svdoattr.hxx>
# endif
# ifndef _SVDOTEXT_HXX //autogen
# include <svx/svdotext.hxx>
# endif
# ifndef _SVX_BULITEM_HXX //autogen
# include <svx/bulitem.hxx>
# endif
# ifndef _SVX_NUMITEM_HXX //autogen
# include <svx/numitem.hxx>
# endif
# ifndef _SVDITER_HXX //autogen
# include <svx/svditer.hxx>
# endif
# ifndef _UNO_LINGU_HXX
# include <svx/unolingu.hxx>
# endif
2002-02-20 10:05:16 +00:00
# ifndef _SFXITEMPOOL_HXX //autogen wg. SfxItemPool
# include <svtools/itempool.hxx>
# endif
2000-10-25 09:34:04 +00:00
# ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
# include <com/sun/star/lang/XMultiServiceFactory.hpp>
# endif
2000-09-18 23:16:46 +00:00
# include <svx/xtable.hxx>
2000-10-25 09:34:04 +00:00
# ifndef _COM_SUN_STAR_LINGUISTIC2_XHYPHENATOR_HPP_
# include <com/sun/star/linguistic2/XHyphenator.hpp>
# endif
# ifndef _COM_SUN_STAR_LINGUISTIC2_XSPELLCHECKER1_HPP_
# include <com/sun/star/linguistic2/XSpellChecker1.hpp>
2000-09-18 23:16:46 +00:00
# endif
# ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
# include <com/sun/star/beans/XPropertySet.hpp>
# endif
# ifndef _OUTLOBJ_HXX
# include <svx/outlobj.hxx>
# endif
2000-10-12 07:40:47 +00:00
# ifndef INCLUDED_SVTOOLS_SAVEOPT_HXX
# include <svtools/saveopt.hxx>
# endif
2001-03-19 08:53:25 +00:00
# include <comphelper/extract.hxx>
2000-09-18 23:16:46 +00:00
# ifndef _ISOLANG_HXX
# include <tools/isolang.hxx>
# endif
# include <unotools/charclass.hxx>
2000-11-17 09:56:37 +00:00
# ifndef _COMPHELPER_PROCESSFACTORY_HXX_
# include <comphelper/processfactory.hxx>
# endif
2002-02-20 10:05:16 +00:00
# ifndef _SVTOOLS_PATHOPTIONS_HXX_
2000-11-15 09:44:50 +00:00
# include <svtools/pathoptions.hxx>
2002-02-20 10:05:16 +00:00
# endif
# ifndef _SVTOOLS_LINGUCFG_HXX_
# include <svtools/lingucfg.hxx>
# endif
# ifndef _SVTOOLS_LINGUPROPS_HXX_
# include <svtools/linguprops.hxx>
# endif
2000-10-25 09:34:04 +00:00
2002-02-20 10:05:16 +00:00
# include "eetext.hxx"
2000-09-18 23:16:46 +00:00
# include "drawdoc.hxx"
# include "sdpage.hxx"
# include "pglink.hxx"
# include "sdattr.hxx"
# include "glob.hrc"
# include "glob.hxx"
# include "stlpool.hxx"
# include "sdiocmpt.hxx"
# include "sdresid.hxx"
# include "cusshow.hxx"
# ifndef MAC
2004-01-20 09:25:48 +00:00
# ifndef SD_DRAW_DOC_SHELL_HXX
# include "../ui/inc/DrawDocShell.hxx"
# endif
# ifndef SD_GRAPHIC_DOC_SHELL_HXX
# include "../ui/inc/GraphicDocShell.hxx"
# endif
2001-01-19 18:15:28 +00:00
# include "../ui/inc/sdxfer.hxx"
2004-01-20 09:25:48 +00:00
# ifndef SD_VIEW_SHELL_HXX
# include "../ui/inc/ViewShell.hxx"
# endif
2000-10-09 08:26:51 +00:00
# include "../ui/inc/optsitem.hxx"
2004-01-20 09:25:48 +00:00
# ifndef SD_FRAME_VIEW_HXX
# include "../ui/inc/FrameView.hxx"
# endif
2000-09-18 23:16:46 +00:00
# else
2004-01-20 09:25:48 +00:00
# ifndef SD_DRAW_DOC_SHELL_HXX
# include "DrawDocShell.hxx"
# endif
# ifndef SD_GRAPHIC_DOC_SHELL_HXX
# include "GraphicDocShell.hxx"
# endif
2001-01-19 18:15:28 +00:00
# include "sdxfer.hxx"
2004-01-20 09:25:48 +00:00
# ifndef SD_VIEW_SHELL_HXX
# include "ViewShell.hxx"
# endif
2000-10-09 08:26:51 +00:00
# include "optsitem.hxx"
2004-01-20 09:25:48 +00:00
# ifndef SD_FRAME_VIEW_HXX
# include "FrameView.hxx"
# endif
2000-09-18 23:16:46 +00:00
# endif
2001-08-06 07:34:08 +00:00
// #90477#
# ifndef _TOOLS_TENCCVT_HXX
# include <tools/tenccvt.hxx>
# endif
2000-10-25 09:34:04 +00:00
using namespace : : rtl ;
2004-03-30 14:43:59 +00:00
using namespace : : sd ;
2000-09-18 23:16:46 +00:00
using namespace : : com : : sun : : star ;
2000-10-25 09:34:04 +00:00
using namespace : : com : : sun : : star : : uno ;
using namespace : : com : : sun : : star : : lang ;
using namespace : : com : : sun : : star : : linguistic2 ;
2000-09-18 23:16:46 +00:00
2003-10-27 12:29:26 +00:00
//////////////////////////////////////////////////////////////////////////////
2000-09-18 23:16:46 +00:00
TYPEINIT1 ( SdDrawDocument , FmFormModel ) ;
SdDrawDocument * SdDrawDocument : : pDocLockedInsertingLinks = NULL ;
/*************************************************************************
| *
| * Konstruktor
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
SdDrawDocument : : SdDrawDocument ( DocumentType eType , SfxObjectShell * pDrDocSh ) :
FmFormModel (
2000-11-10 15:53:19 +00:00
SvtPathOptions ( ) . GetPalettePath ( ) ,
2004-10-04 17:16:14 +00:00
NULL , pDrDocSh ) ,
2000-09-18 23:16:46 +00:00
eDocType ( eType ) ,
2004-01-20 09:25:48 +00:00
pDocSh ( static_cast < : : sd : : DrawDocShell * > ( pDrDocSh ) ) ,
2001-11-23 13:17:09 +00:00
pCreatingTransferable ( NULL ) ,
2000-09-18 23:16:46 +00:00
bPresAll ( TRUE ) ,
bPresEndless ( FALSE ) ,
bPresManual ( FALSE ) ,
bPresMouseVisible ( TRUE ) ,
bPresMouseAsPen ( FALSE ) ,
bPresLockedPages ( FALSE ) ,
bStartPresWithNavigator ( FALSE ) ,
bAnimationAllowed ( TRUE ) ,
bPresAlwaysOnTop ( FALSE ) ,
bPresFullScreen ( TRUE ) ,
nPresPause ( 10 ) ,
bPresShowLogo ( FALSE ) ,
2002-11-08 13:44:43 +00:00
bCustomShow ( false ) ,
2000-09-18 23:16:46 +00:00
nPresFirstPage ( 1 ) ,
pOutliner ( NULL ) ,
pInternalOutliner ( NULL ) ,
ePageNumType ( SVX_ARABIC ) ,
bNewOrLoadCompleted ( FALSE ) ,
pWorkStartupTimer ( NULL ) ,
pOnlineSpellingTimer ( NULL ) ,
pOnlineSpellingList ( NULL ) ,
bInitialOnlineSpellingEnabled ( TRUE ) ,
bHasOnlineSpellErrors ( FALSE ) ,
pOnlineSearchItem ( NULL ) ,
2000-09-27 08:06:50 +00:00
mpInternational ( NULL ) ,
mpLocale ( NULL ) ,
mpCharClass ( NULL ) ,
2000-09-18 23:16:46 +00:00
bAllocDocSh ( FALSE ) ,
pDeletedPresObjList ( NULL ) ,
nFileFormatVersion ( SDIOCOMPAT_VERSIONDONTKNOW ) ,
2001-02-09 12:01:31 +00:00
pCustomShowList ( NULL ) ,
eLanguage ( LANGUAGE_SYSTEM ) ,
eLanguageCJK ( LANGUAGE_SYSTEM ) ,
2003-05-16 13:16:34 +00:00
eLanguageCTL ( LANGUAGE_SYSTEM ) ,
2003-10-27 12:29:26 +00:00
mbStartWithPresentation ( false ) ,
// #109538#
2004-01-20 09:25:48 +00:00
mpDrawPageListWatcher ( 0 ) ,
mpMasterPageListWatcher ( 0 )
2000-09-18 23:16:46 +00:00
{
2003-10-27 12:29:26 +00:00
// #109538#
2004-01-20 09:25:48 +00:00
mpDrawPageListWatcher = : : std : : auto_ptr < ImpDrawPageListWatcher > (
new ImpDrawPageListWatcher ( * this ) ) ;
mpMasterPageListWatcher = : : std : : auto_ptr < ImpMasterPageListWatcher > (
new ImpMasterPageListWatcher ( * this ) ) ;
2003-10-27 12:29:26 +00:00
2000-09-18 23:16:46 +00:00
SetObjectShell ( pDrDocSh ) ; // fuer das VCDrawModel
if ( pDocSh )
{
SetSwapGraphics ( TRUE ) ;
}
// Masseinheit (von App) und Massstab (von SdMod) setzen
INT32 nX , nY ;
SdOptions * pOptions = SD_MOD ( ) - > GetSdOptions ( eDocType ) ;
pOptions - > GetScale ( nX , nY ) ;
2001-09-25 11:09:02 +00:00
// #92067# Allow UI scale only for draw documents.
if ( eType = = DOCUMENT_TYPE_DRAW )
SetUIUnit ( ( FieldUnit ) pOptions - > GetMetric ( ) , Fraction ( nX , nY ) ) ; // user-defined
else
SetUIUnit ( ( FieldUnit ) pOptions - > GetMetric ( ) , Fraction ( 1 , 1 ) ) ; // default
2000-09-18 23:16:46 +00:00
SetScaleUnit ( MAP_100TH_MM ) ;
SetScaleFraction ( Fraction ( 1 , 1 ) ) ;
SetDefaultFontHeight ( 847 ) ; // 24p
pItemPool - > SetDefaultMetric ( SFX_MAPUNIT_100TH_MM ) ;
pItemPool - > FreezeIdRanges ( ) ;
SetTextDefaults ( ) ;
// die DrawingEngine muss auch wissen, wo er ist
FmFormModel : : SetStyleSheetPool ( new SdStyleSheetPool ( GetPool ( ) , this ) ) ;
2001-02-09 12:01:31 +00:00
// Dem DrawOutliner den StyleSheetPool setzen, damit Textobjekte richtig
// eingelesen werden koennen. Der Link zum StyleRequest-Handler des
// Dokuments wird erst in NewOrLoadCompleted gesetzt, da erst dann alle
// Vorlagen existieren.
SdrOutliner & rOutliner = GetDrawOutliner ( ) ;
rOutliner . SetStyleSheetPool ( ( SfxStyleSheetPool * ) GetStyleSheetPool ( ) ) ;
2001-06-19 14:07:14 +00:00
rOutliner . SetCalcFieldValueHdl ( LINK ( SD_MOD ( ) , SdModule , CalcFieldValueHdl ) ) ;
2000-09-18 23:16:46 +00:00
2002-07-26 11:42:05 +00:00
// set linguistic options
2000-09-18 23:16:46 +00:00
{
2002-02-20 10:05:16 +00:00
const SvtLinguConfig aLinguConfig ;
2002-07-26 11:42:05 +00:00
SvtLinguOptions aOptions ;
aLinguConfig . GetOptions ( aOptions ) ;
2002-02-20 10:05:16 +00:00
2002-07-26 11:42:05 +00:00
SetLanguage ( aOptions . nDefaultLanguage , EE_CHAR_LANGUAGE ) ;
SetLanguage ( aOptions . nDefaultLanguage_CJK , EE_CHAR_LANGUAGE_CJK ) ;
SetLanguage ( aOptions . nDefaultLanguage_CTL , EE_CHAR_LANGUAGE_CTL ) ;
2002-02-20 10:05:16 +00:00
2002-07-26 11:42:05 +00:00
bOnlineSpell = aOptions . bIsSpellAuto ;
bHideSpell = aOptions . bIsSpellHideMarkings ;
2000-09-18 23:16:46 +00:00
}
2003-03-27 09:58:12 +00:00
LanguageType eRealLanguage = International : : GetRealLanguage ( eLanguage ) ;
2000-09-18 23:16:46 +00:00
mpInternational = new International ( eLanguage ) ;
String aLanguage , aCountry , aEmpty ;
2003-03-27 09:58:12 +00:00
ConvertLanguageToIsoNames ( eRealLanguage , aLanguage , aCountry ) ;
2000-09-18 23:16:46 +00:00
mpLocale = new : : com : : sun : : star : : lang : : Locale ( aLanguage , aCountry , aEmpty ) ;
mpCharClass = new CharClass ( * mpLocale ) ;
2003-04-24 13:35:54 +00:00
// If the current application language is a language that uses right-to-left text...
LanguageType eRealCTLLanguage = Application : : GetSettings ( ) . GetLanguage ( ) ;
if ( ( LANGUAGE_ARABIC = = ( eRealCTLLanguage & 0x00ff ) ) | |
( LANGUAGE_URDU = = ( eRealCTLLanguage & 0x00ff ) ) | |
( LANGUAGE_HEBREW = = eRealCTLLanguage ) )
2003-03-27 09:58:12 +00:00
{
// ... then we have to set this as a default
SetDefaultWritingMode ( : : com : : sun : : star : : text : : WritingMode_RL_TB ) ;
}
2003-12-01 09:07:08 +00:00
// for korean and japanese languages we have a different default for apply spacing between asian, latin and ctl text
if ( ( LANGUAGE_KOREAN = = eRealCTLLanguage ) | | ( LANGUAGE_KOREAN_JOHAB = = eRealCTLLanguage ) | | ( LANGUAGE_JAPANESE = = eRealCTLLanguage ) )
{
GetPool ( ) . GetSecondaryPool ( ) - > SetPoolDefaultItem ( SvxScriptSpaceItem ( FALSE ) ) ;
}
2000-09-18 23:16:46 +00:00
// DefTab und SpellOptions setzen
//OfaMiscCfg* pOfaMiscCfg = SFX_APP()->GetMiscConfig();
// Jetzt am Modul (SD)
USHORT nDefTab = pOptions - > GetDefTab ( ) ;
SetDefaultTabulator ( nDefTab ) ;
2004-02-04 13:19:04 +00:00
try
2000-09-18 23:16:46 +00:00
{
2002-02-20 10:05:16 +00:00
Reference < XSpellChecker1 > xSpellChecker ( LinguMgr : : GetSpellChecker ( ) ) ;
if ( xSpellChecker . is ( ) )
rOutliner . SetSpeller ( xSpellChecker ) ;
Reference < XHyphenator > xHyphenator ( LinguMgr : : GetHyphenator ( ) ) ;
if ( xHyphenator . is ( ) )
rOutliner . SetHyphenator ( xHyphenator ) ;
SetForbiddenCharsTable ( new SvxForbiddenCharactersTable ( : : comphelper : : getProcessServiceFactory ( ) ) ) ;
2000-09-18 23:16:46 +00:00
}
2004-02-04 13:19:04 +00:00
catch ( . . . )
2000-09-18 23:16:46 +00:00
{
DBG_ERROR ( " Can't get SpellChecker " ) ;
}
2003-06-26 10:11:18 +00:00
rOutliner . SetDefaultLanguage ( Application : : GetSettings ( ) . GetLanguage ( ) ) ;
2000-09-18 23:16:46 +00:00
aOldNotifyUndoActionHdl = GetNotifyUndoActionHdl ( ) ;
SetNotifyUndoActionHdl ( LINK ( this , SdDrawDocument , NotifyUndoActionHdl ) ) ;
if ( pDocSh )
{
SetLinkManager ( new SvxLinkManager ( pDocSh ) ) ;
}
2001-02-09 12:01:31 +00:00
ULONG nCntrl = rOutliner . GetControlWord ( ) ;
nCntrl | = EE_CNTRL_ALLOWBIGOBJS ;
nCntrl | = EE_CNTRL_URLSFXEXECUTE ;
if ( bHideSpell )
nCntrl | = EE_CNTRL_NOREDLINES ;
else
nCntrl & = ~ EE_CNTRL_NOREDLINES ;
if ( bOnlineSpell )
nCntrl | = EE_CNTRL_ONLINESPELLING ;
else
nCntrl & = ~ EE_CNTRL_ONLINESPELLING ;
2001-04-24 12:06:10 +00:00
nCntrl & = ~ EE_CNTRL_ULSPACESUMMATION ;
2001-05-07 12:14:17 +00:00
if ( eDocType ! = DOCUMENT_TYPE_IMPRESS )
SetSummationOfParagraphs ( sal_False ) ;
else
{
SetSummationOfParagraphs ( pOptions - > IsSummationOfParagraphs ( ) ) ;
if ( pOptions - > IsSummationOfParagraphs ( ) )
nCntrl | = EE_CNTRL_ULSPACESUMMATION ;
}
2001-02-09 12:01:31 +00:00
rOutliner . SetControlWord ( nCntrl ) ;
2003-04-24 13:35:54 +00:00
// Initialize the printer independent layout mode.
SetPrinterIndependentLayout ( pOptions - > GetPrinterIndependentLayout ( ) ) ;
2001-02-09 12:01:31 +00:00
2000-09-18 23:16:46 +00:00
// Dem HitTestOutliner den StyleSheetPool setzen.
// Der Link zum StyleRequest-Handler des
// Dokuments wird erst in NewOrLoadCompleted gesetzt, da erst dann alle
// Vorlagen existieren.
SfxItemSet aSet2 ( pHitTestOutliner - > GetEmptyItemSet ( ) ) ;
pHitTestOutliner - > SetStyleSheetPool ( ( SfxStyleSheetPool * ) GetStyleSheetPool ( ) ) ;
2001-06-19 14:07:14 +00:00
pHitTestOutliner - > SetCalcFieldValueHdl ( LINK ( SD_MOD ( ) , SdModule , CalcFieldValueHdl ) ) ;
2001-06-25 12:08:18 +00:00
2004-02-04 13:19:04 +00:00
try
2000-09-18 23:16:46 +00:00
{
2002-02-20 10:05:16 +00:00
Reference < XSpellChecker1 > xSpellChecker ( LinguMgr : : GetSpellChecker ( ) ) ;
if ( xSpellChecker . is ( ) )
pHitTestOutliner - > SetSpeller ( xSpellChecker ) ;
Reference < XHyphenator > xHyphenator ( LinguMgr : : GetHyphenator ( ) ) ;
if ( xHyphenator . is ( ) )
pHitTestOutliner - > SetHyphenator ( xHyphenator ) ;
2000-09-18 23:16:46 +00:00
}
2004-02-04 13:19:04 +00:00
catch ( . . . )
2000-09-18 23:16:46 +00:00
{
DBG_ERROR ( " Can't get SpellChecker " ) ;
}
2003-06-26 10:11:18 +00:00
pHitTestOutliner - > SetDefaultLanguage ( Application : : GetSettings ( ) . GetLanguage ( ) ) ;
2000-09-18 23:16:46 +00:00
ULONG nCntrl2 = pHitTestOutliner - > GetControlWord ( ) ;
nCntrl2 | = EE_CNTRL_ALLOWBIGOBJS ;
nCntrl2 | = EE_CNTRL_URLSFXEXECUTE ;
nCntrl2 | = EE_CNTRL_NOREDLINES ;
nCntrl2 & = ~ EE_CNTRL_ONLINESPELLING ;
2001-04-24 12:06:10 +00:00
nCntrl2 & = ~ EE_CNTRL_ULSPACESUMMATION ;
if ( pOptions - > IsSummationOfParagraphs ( ) )
nCntrl2 | = EE_CNTRL_ULSPACESUMMATION ;
2000-09-18 23:16:46 +00:00
pHitTestOutliner - > SetControlWord ( nCntrl2 ) ;
/**************************************************************************
* Layer anlegen
*
* Es werden auf Pages und MasterPages folgende Default - Layer angelegt :
*
* Layer STR_LAYOUT : Standardlayer f <EFBFBD> r alle Zeichenobjekte
*
* Layer STR_BCKGRND : Hintergrund der MasterPage
* ( auf normalen Pages z . Z . keine Verwendung )
*
* Layer STR_BCKGRNDOBJ : Objekte auf dem Hintergrund der MasterPage
* ( auf normalen Pages z . Z . keine Verwendung )
*
* Layer STR_CONTROLS : Standardlayer f <EFBFBD> r Controls
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
{
String aControlLayerName ( SdResId ( STR_LAYER_CONTROLS ) ) ;
SdrLayerAdmin & rLayerAdmin = GetLayerAdmin ( ) ;
rLayerAdmin . NewLayer ( String ( SdResId ( STR_LAYER_LAYOUT ) ) ) ;
rLayerAdmin . NewLayer ( String ( SdResId ( STR_LAYER_BCKGRND ) ) ) ;
rLayerAdmin . NewLayer ( String ( SdResId ( STR_LAYER_BCKGRNDOBJ ) ) ) ;
rLayerAdmin . NewLayer ( aControlLayerName ) ;
rLayerAdmin . NewLayer ( String ( SdResId ( STR_LAYER_MEASURELINES ) ) ) ;
rLayerAdmin . SetControlLayerName ( aControlLayerName ) ;
}
pFrameViewList = new List ( ) ;
}
/*************************************************************************
| *
| * Destruktor
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2001-10-22 12:36:57 +00:00
SdDrawDocument : : ~ SdDrawDocument ( )
2000-09-18 23:16:46 +00:00
{
2003-03-27 09:58:12 +00:00
Broadcast ( SdrHint ( HINT_MODELCLEARED ) ) ;
2000-09-18 23:16:46 +00:00
if ( pWorkStartupTimer )
{
if ( pWorkStartupTimer - > IsActive ( ) )
pWorkStartupTimer - > Stop ( ) ;
delete pWorkStartupTimer ;
pWorkStartupTimer = NULL ;
}
StopOnlineSpelling ( ) ;
delete pOnlineSearchItem ;
pOnlineSearchItem = NULL ;
CloseBookmarkDoc ( ) ;
SetAllocDocSh ( FALSE ) ;
SetNotifyUndoActionHdl ( aOldNotifyUndoActionHdl ) ;
2004-05-10 13:36:46 +00:00
// #116168#
ClearModel ( sal_True ) ;
2000-09-18 23:16:46 +00:00
if ( pLinkManager )
{
// BaseLinks freigeben
if ( pLinkManager - > GetLinks ( ) . Count ( ) )
{
pLinkManager - > Remove ( 0 , pLinkManager - > GetLinks ( ) . Count ( ) ) ;
}
delete pLinkManager ;
pLinkManager = NULL ;
}
2004-01-20 09:25:48 +00:00
: : sd : : FrameView * pFrameView = NULL ;
2000-09-18 23:16:46 +00:00
for ( ULONG i = 0 ; i < pFrameViewList - > Count ( ) ; i + + )
{
// Ggf. FrameViews loeschen
2004-01-20 09:25:48 +00:00
pFrameView =
static_cast < : : sd : : FrameView * > ( pFrameViewList - > GetObject ( i ) ) ;
2000-09-18 23:16:46 +00:00
if ( pFrameView )
delete pFrameView ;
}
delete pFrameViewList ;
pFrameViewList = NULL ;
if ( pCustomShowList )
{
for ( ULONG j = 0 ; j < pCustomShowList - > Count ( ) ; j + + )
{
// Ggf. CustomShows loeschen
SdCustomShow * pCustomShow = ( SdCustomShow * ) pCustomShowList - > GetObject ( j ) ;
delete pCustomShow ;
}
delete pCustomShowList ;
pCustomShowList = NULL ;
}
delete pOutliner ;
pOutliner = NULL ;
delete pInternalOutliner ;
pInternalOutliner = NULL ;
delete pDeletedPresObjList ;
pDeletedPresObjList = NULL ;
delete mpInternational ;
mpInternational = NULL ;
delete mpLocale ;
mpLocale = NULL ;
delete mpCharClass ;
mpCharClass = NULL ;
2004-01-20 09:25:48 +00:00
/*af deletion is done by auto ptr s.
2003-10-27 12:29:26 +00:00
// #109538#
delete mpDrawPageListWatcher ;
mpDrawPageListWatcher = 0L ;
// #109538#
delete mpMasterPageListWatcher ;
mpMasterPageListWatcher = 0L ;
2004-01-20 09:25:48 +00:00
*/
2000-09-18 23:16:46 +00:00
}
/*************************************************************************
| *
| * Diese Methode erzeugt ein neues Dokument ( SdDrawDocument ) und gibt einen
| * Zeiger darauf zurueck . Die Drawing Engine benutzt diese Methode um das
| * Dokument oder Teile davon ins Clipboard / DragServer stellen zu koennen .
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2001-10-22 12:36:57 +00:00
SdrModel * SdDrawDocument : : AllocModel ( ) const
2000-09-18 23:16:46 +00:00
{
SdDrawDocument * pNewModel = NULL ;
2001-11-23 13:17:09 +00:00
if ( pCreatingTransferable )
2000-09-18 23:16:46 +00:00
{
2001-01-19 18:15:28 +00:00
// Dokument wird fuer Drag&Drop/Clipboard erzeugt, dafuer muss dem Dokument eine DocShell (SvPersist) bekannt sein
2004-10-04 17:16:14 +00:00
SfxObjectShell * pObj = NULL ;
2004-01-20 09:25:48 +00:00
: : sd : : DrawDocShell * pNewDocSh = NULL ;
2000-09-18 23:16:46 +00:00
2001-11-23 13:17:09 +00:00
if ( eDocType = = DOCUMENT_TYPE_IMPRESS )
2004-01-20 09:25:48 +00:00
pCreatingTransferable - > SetDocShell ( new : : sd : : DrawDocShell (
SFX_CREATE_MODE_EMBEDDED , TRUE , eDocType ) ) ;
2001-11-23 13:17:09 +00:00
else
2004-01-20 09:25:48 +00:00
pCreatingTransferable - > SetDocShell ( new : : sd : : GraphicDocShell (
SFX_CREATE_MODE_EMBEDDED , TRUE , eDocType ) ) ;
2000-09-18 23:16:46 +00:00
2004-01-20 09:25:48 +00:00
pNewDocSh = static_cast < : : sd : : DrawDocShell * > ( pObj = pCreatingTransferable - > GetDocShell ( ) ) ;
2001-01-19 18:15:28 +00:00
pNewDocSh - > DoInitNew ( NULL ) ;
2000-09-18 23:16:46 +00:00
pNewModel = pNewDocSh - > GetDoc ( ) ;
// Nur fuer Clipboard notwendig,
// fuer Drag&Drop erfolgt dieses im DragServer
SdStyleSheetPool * pOldStylePool = ( SdStyleSheetPool * ) GetStyleSheetPool ( ) ;
SdStyleSheetPool * pNewStylePool = ( SdStyleSheetPool * ) pNewModel - > GetStyleSheetPool ( ) ;
pNewStylePool - > CopyGraphicSheets ( * pOldStylePool ) ;
for ( USHORT i = 0 ; i < GetMasterSdPageCount ( PK_STANDARD ) ; i + + )
{
// Alle Layouts der MasterPage mitnehmen
2001-06-28 07:11:11 +00:00
String aOldLayoutName ( ( ( SdDrawDocument * ) this ) - > GetMasterSdPage ( i , PK_STANDARD ) - > GetLayoutName ( ) ) ;
aOldLayoutName . Erase ( aOldLayoutName . SearchAscii ( SD_LT_SEPARATOR ) ) ;
2000-09-18 23:16:46 +00:00
pNewStylePool - > CopyLayoutSheets ( aOldLayoutName , * pOldStylePool ) ;
}
pNewModel - > NewOrLoadCompleted ( DOC_LOADED ) ; // loaded from source document
}
2001-01-19 18:15:28 +00:00
else if ( bAllocDocSh )
2000-09-18 23:16:46 +00:00
{
2001-01-19 18:15:28 +00:00
// Es wird eine DocShell erzeugt, welche mit GetAllocedDocSh() zurueckgegeben wird
2000-09-18 23:16:46 +00:00
SdDrawDocument * pDoc = ( SdDrawDocument * ) this ;
pDoc - > SetAllocDocSh ( FALSE ) ;
2004-01-20 09:25:48 +00:00
pDoc - > xAllocedDocShRef = new : : sd : : DrawDocShell (
SFX_CREATE_MODE_EMBEDDED , TRUE , eDocType ) ;
2000-09-18 23:16:46 +00:00
pDoc - > xAllocedDocShRef - > DoInitNew ( NULL ) ;
pNewModel = pDoc - > xAllocedDocShRef - > GetDoc ( ) ;
}
else
{
pNewModel = new SdDrawDocument ( eDocType , NULL ) ;
}
2001-01-19 18:15:28 +00:00
return pNewModel ;
2000-09-18 23:16:46 +00:00
}
/*************************************************************************
| *
| * Diese Methode erzeugt eine neue Seite ( SdPage ) und gibt einen Zeiger
| * darauf zurueck . Die Drawing Engine benutzt diese Methode beim Laden
| * zur Erzeugung von Seiten ( deren Typ sie ja nicht kennt , da es ABLEITUNGEN
| * der SdrPage sind ) .
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2001-10-22 12:36:57 +00:00
SdrPage * SdDrawDocument : : AllocPage ( FASTBOOL bMasterPage )
2000-09-18 23:16:46 +00:00
{
return new SdPage ( * this , NULL , bMasterPage ) ;
}
/*************************************************************************
| *
| * Inserter fuer SvStream zum Speichern
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2004-11-03 07:53:14 +00:00
//BFS02SvStream& operator << (SvStream& rOut, SdDrawDocument& rDoc)
//BFS02{
//BFS02 // #90477# CharSet eSysSet = ::GetStoreCharSet( gsl_getSystemTextEncoding());
//BFS02 CharSet eSysSet = GetSOStoreTextEncoding(gsl_getSystemTextEncoding(), (sal_uInt16)rOut.GetVersion());
//BFS02
//BFS02 /**************************************************************************
//BFS02 * Aktuelle FileFormat-Versionsnummer
//BFS02 * Bei Aenderugen stets inkrementieren und beim Laden beruecksichtigen!
//BFS02 **************************************************************************/
//BFS02 rDoc.nFileFormatVersion = 18;
//BFS02
//BFS02 // AutoLayouts muessen ggf. erzeugt werden
//BFS02 rDoc.StopWorkStartupDelay();
//BFS02
//BFS02 // Eindeutige Namen der StandardLayer erzeugen
//BFS02 rDoc.MakeUniqueLayerNames();
//BFS02
//BFS02 rOut << (FmFormModel&) rDoc;
//BFS02
//BFS02 // Sprachabhaengige Namen der StandardLayer wieder herstellen
//BFS02 rDoc.RestoreLayerNames();
//BFS02
//BFS02 if ( rDoc.IsStreamingSdrModel() )
//BFS02 {
//BFS02 // Es wird nur das SdrModel gestreamt, nicht das SdDrawDocument!
//BFS02 // Anwendungsfall: svdraw Clipboard-Format
//BFS02 return(rOut);
//BFS02 }
//BFS02
//BFS02 SdIOCompat aIO(rOut, STREAM_WRITE, rDoc.nFileFormatVersion);
//BFS02
//BFS02 BOOL bDummy = TRUE;
//BFS02 rOut << bDummy; // ehem. bPresentation
//BFS02 rOut << rDoc.bPresAll;
//BFS02 rOut << rDoc.bPresEndless;
//BFS02 rOut << rDoc.bPresManual;
//BFS02 rOut << rDoc.bPresMouseVisible;
//BFS02 rOut << rDoc.bPresMouseAsPen;
//BFS02 rOut << rDoc.nPresFirstPage;
//BFS02
//BFS02 // Es wird nun eine Liste von FrameViews geschrieben (siehe weiter unten),
//BFS02 // daher wird an dieser Stelle ein FALSE vermerkt.
//BFS02 BOOL bSingleFrameView = FALSE;
//BFS02 rOut << bSingleFrameView;
//BFS02
//BFS02 /**************************************************************************
//BFS02 * Frueher (StarDraw Version 3.0, File-Format Version 3) wurde hier das
//BFS02 * JobSetup geschrieben, nun der Printer (binaer-kompatibel, daher wurde
//BFS02 * die Version des File-Formats nicht geaendert)
//BFS02 **************************************************************************/
//BFS02 if (rDoc.pDocSh)
//BFS02 {
//BFS02 SfxPrinter* pPrinter = rDoc.pDocSh->GetPrinter(TRUE);
//BFS02 pPrinter->Store(rOut);
//BFS02 }
//BFS02 else
//BFS02 {
//BFS02 // Keine DocShell, daher wird ein JobSetup geschrieben
//BFS02 JobSetup aJobSetup;
//BFS02 rOut << aJobSetup;
//BFS02 }
//BFS02
//BFS02 rOut << (ULONG) rDoc.eLanguage;
//BFS02
//BFS02 /**************************************************************************
//BFS02 * FrameViews schreiben
//BFS02 **************************************************************************/
//BFS02 ULONG nFrameViewCount = 0;
//BFS02 ::sd::ViewShell* pViewSh = NULL;
//BFS02 SfxViewShell* pSfxViewSh = NULL;
//BFS02 SfxViewFrame* pSfxViewFrame = SfxViewFrame::GetFirst(rDoc.pDocSh,
//BFS02 TYPE(SfxTopViewFrame));
//BFS02
//BFS02 while (pSfxViewFrame)
//BFS02 {
//BFS02 // Anzahl FrameViews ermitteln
//BFS02 pSfxViewSh = pSfxViewFrame->GetViewShell();
//BFS02 pViewSh = PTR_CAST(::sd::ViewShell, pSfxViewSh );
//BFS02
//BFS02 if ( pViewSh && pViewSh->GetFrameView() )
//BFS02 {
//BFS02 nFrameViewCount++;
//BFS02 }
//BFS02
//BFS02 pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, rDoc.pDocSh,
//BFS02 TYPE(SfxTopViewFrame));
//BFS02 }
//BFS02
//BFS02 // Anzahl FrameViews schreiben
//BFS02 rOut << nFrameViewCount;
//BFS02
//BFS02 ::sd::FrameView* pFrame = NULL;
//BFS02 pViewSh = NULL;
//BFS02 pSfxViewSh = NULL;
//BFS02 pSfxViewFrame = SfxViewFrame::GetFirst(rDoc.pDocSh, TYPE(SfxTopViewFrame));
//BFS02
//BFS02 while (pSfxViewFrame)
//BFS02 {
//BFS02 // FrameViews schreiben
//BFS02 pSfxViewSh = pSfxViewFrame->GetViewShell();
//BFS02 pViewSh = PTR_CAST(::sd::ViewShell, pSfxViewSh );
//BFS02
//BFS02 if ( pViewSh && pViewSh->GetFrameView() )
//BFS02 {
//BFS02 pViewSh->WriteFrameViewData();
//BFS02 rOut << *pViewSh->GetFrameView();
//BFS02 }
//BFS02
//BFS02 pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, rDoc.pDocSh,
//BFS02 TYPE(SfxTopViewFrame));
//BFS02 }
//BFS02
//BFS02 rOut << rDoc.bStartPresWithNavigator;
//BFS02 rOut << rDoc.bPresLockedPages;
//BFS02 rOut << rDoc.bPresAlwaysOnTop;
//BFS02 rOut << rDoc.bOnlineSpell;
//BFS02 rOut << rDoc.bHideSpell;
//BFS02 rOut << rDoc.bPresFullScreen;
//BFS02 rOut.WriteByteString( rDoc.aPresPage, eSysSet );
//BFS02 rOut << rDoc.bAnimationAllowed;
//BFS02
//BFS02 UINT16 nDocType = (UINT16) rDoc.eDocType;
//BFS02 rOut << nDocType;
//BFS02
//BFS02 // CustomShow aktiv
//BFS02 rOut << rDoc.bCustomShow;
//BFS02
//BFS02 // Anzahl CustomShows schreiben
//BFS02 ULONG nCustomShowCount = 0;
//BFS02
//BFS02 if (rDoc.pCustomShowList)
//BFS02 {
//BFS02 nCustomShowCount = rDoc.pCustomShowList->Count();
//BFS02 }
//BFS02
//BFS02 rOut << nCustomShowCount;
//BFS02
//BFS02 if (rDoc.pCustomShowList)
//BFS02 {
//BFS02 for (ULONG i = 0; i < nCustomShowCount; i++)
//BFS02 {
//BFS02 // CustomShows schreiben
//BFS02 SdCustomShow* pCustomShow = (SdCustomShow*) rDoc.pCustomShowList->GetObject(i);
//BFS02 rOut << *pCustomShow;
//BFS02 }
//BFS02
//BFS02 // Position der aktuellen CustomShow
//BFS02 ULONG nCurPos = rDoc.pCustomShowList->GetCurPos();
//BFS02 rOut << nCurPos;
//BFS02 }
//BFS02
//BFS02 // ab Version 15
//BFS02 rOut << (ULONG) rDoc.GetPageNumType();
//BFS02
//BFS02 // ab Version 17
//BFS02 rOut << rDoc.GetPresPause() << rDoc.IsPresShowLogo();
//BFS02
//BFS02 // ab Version 18 (keine Aenderung)
//BFS02
//BFS02 return rOut;
//BFS02}
2000-09-18 23:16:46 +00:00
/*************************************************************************
| *
| * Extractor fuer SvStream zum Laden
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2004-11-03 07:53:14 +00:00
//BFS02SvStream& operator >> (SvStream& rIn, SdDrawDocument& rDoc)
//BFS02{
//BFS02 // #90477# CharSet eSysSet = ::GetStoreCharSet( gsl_getSystemTextEncoding());
//BFS02 CharSet eSysSet = GetSOLoadTextEncoding(gsl_getSystemTextEncoding(), (sal_uInt16)rIn.GetVersion());
//BFS02
//BFS02 rIn >> (FmFormModel&) rDoc;
//BFS02 rDoc.GetItemPool().LoadCompleted();
//BFS02 rDoc.SetTextDefaults(); // overwrites loaded pool defaults
//BFS02
//BFS02 // Turn off printer independent layout (make it printer *dependent*) for
//BFS02 // pre-6.0 documents.
//BFS02 rDoc.SetPrinterIndependentLayout (
//BFS02 ::com::sun::star::document::PrinterIndependentLayout::DISABLED);
//BFS02
//BFS02 // Fehler ?
//BFS02 if (rIn.GetError() != 0)
//BFS02 return (rIn);
//BFS02
//BFS02 if ( rDoc.IsStreamingSdrModel() )
//BFS02 {
//BFS02 // Es wird nur das SdrModel gestreamt, nicht das SdDrawDocument!
//BFS02 // Anwendungsfall: svdraw Clipboard-Format
//BFS02 return(rIn);
//BFS02 }
//BFS02
//BFS02 SdIOCompat aIO(rIn, STREAM_READ);
//BFS02
//BFS02 BOOL bDummy;
//BFS02 rIn >> bDummy; // ehem. bPresentation
//BFS02 rIn >> rDoc.bPresAll;
//BFS02 rIn >> rDoc.bPresEndless;
//BFS02 rIn >> rDoc.bPresManual;
//BFS02 rIn >> rDoc.bPresMouseVisible;
//BFS02 rIn >> rDoc.bPresMouseAsPen;
//BFS02 rIn >> rDoc.nPresFirstPage;
//BFS02
//BFS02 rDoc.nFileFormatVersion = aIO.GetVersion();
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 1)
//BFS02 {
//BFS02 // Daten der Versionen >= 1 einlesen
//BFS02
//BFS02 BOOL bSingleFrameView;
//BFS02 rIn >> bSingleFrameView;
//BFS02
//BFS02 if (bSingleFrameView)
//BFS02 {
//BFS02 ::sd::FrameView * pFrameView = new ::sd::FrameView( &rDoc );
//BFS02 rIn >> *pFrameView;
//BFS02 rDoc.pFrameViewList->Insert(pFrameView, LIST_APPEND);
//BFS02
//BFS02 // Fehler ?
//BFS02 if (rIn.GetError() != 0)
//BFS02 return (rIn);
//BFS02 }
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 2)
//BFS02 {
//BFS02 // Daten der Versionen >= 2 einlesen
//BFS02
//BFS02 /******************************************************************
//BFS02 * Frueher (StarDraw Version 3.0, File-Format Version 3) wurde hier
//BFS02 * das JobSetup eingelesen, nun wird der Printer erzeugt
//BFS02 * (binaer-kompatibel)
//BFS02 *******************************************************************/
//BFS02 // ItemSet mit speziellem Poolbereich anlegen
//BFS02 SfxItemSet* pSet = new SfxItemSet( rDoc.GetPool(),
//BFS02 SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN,
//BFS02 SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC,
//BFS02 ATTR_OPTIONS_PRINT, ATTR_OPTIONS_PRINT,
//BFS02 0 );
//BFS02 // PrintOptionsSet setzen
//BFS02 SdOptionsPrintItem aPrintItem(ATTR_OPTIONS_PRINT
//BFS02 ,SD_MOD()->GetSdOptions(rDoc.eDocType)
//BFS02 );
//BFS02
//BFS02 SfxFlagItem aFlagItem( SID_PRINTER_CHANGESTODOC );
//BFS02 USHORT nFlags = 0;
//BFS02
//BFS02 nFlags = (aPrintItem.IsWarningSize() ? SFX_PRINTER_CHG_SIZE : 0) |
//BFS02 (aPrintItem.IsWarningOrientation() ? SFX_PRINTER_CHG_ORIENTATION : 0);
//BFS02 aFlagItem.SetValue( nFlags );
//BFS02
//BFS02 pSet->Put( aPrintItem );
//BFS02 pSet->Put( SfxBoolItem( SID_PRINTER_NOTFOUND_WARN, aPrintItem.IsWarningPrinter() ) );
//BFS02 pSet->Put( aFlagItem );
//BFS02
//BFS02 SfxPrinter* pPrinter = SfxPrinter::Create(rIn, pSet);
//BFS02
//BFS02 MapMode aMM (pPrinter->GetMapMode());
//BFS02 aMM.SetMapUnit(MAP_100TH_MM);
//BFS02 pPrinter->SetMapMode(aMM);
//BFS02 if (rDoc.pDocSh) // z. B. nicht bei "Einfuegen-Datei"
//BFS02 rDoc.pDocSh->SetPrinter(pPrinter);
//BFS02 else
//BFS02 delete pPrinter;
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 3)
//BFS02 {
//BFS02 ULONG nTmp;
//BFS02 rIn >> nTmp;
//BFS02 rDoc.SetLanguage( (LanguageType) nTmp, EE_CHAR_LANGUAGE );
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 4)
//BFS02 {
//BFS02 /**********************************************************************
//BFS02 * FrameViews lesen
//BFS02 **********************************************************************/
//BFS02 ULONG nCount = 0;
//BFS02 ::sd::FrameView* pFrameView = NULL;
//BFS02
//BFS02 for (nCount=0; nCount<rDoc.pFrameViewList->Count(); nCount++)
//BFS02 {
//BFS02 // Ggf. FrameViews loeschen
//BFS02 pFrameView = static_cast< ::sd::FrameView*>(
//BFS02 rDoc.pFrameViewList->GetObject(nCount));
//BFS02
//BFS02 if (pFrameView)
//BFS02 delete pFrameView;
//BFS02 }
//BFS02
//BFS02 rDoc.pFrameViewList->Clear();
//BFS02
//BFS02 // Anzahl FrameViews lesen
//BFS02 const SvtSaveOptions aOptions;
//BFS02 BOOL bIsSaveDocView = aOptions.IsSaveDocView();
//BFS02
//BFS02 ULONG nFrameViewCount = 0;
//BFS02 rIn >> nFrameViewCount;
//BFS02
//BFS02 for (nCount=0; nCount<nFrameViewCount; nCount++)
//BFS02 {
//BFS02 // Einzelne FrameViews lesen
//BFS02 pFrameView = new ::sd::FrameView( &rDoc );
//BFS02 rIn >> *pFrameView;
//BFS02
//BFS02 if (bIsSaveDocView)
//BFS02 {
//BFS02 // FrameViews werden fuer die ViewShell gebraucht
//BFS02 // Die FrameView gehoert nun der Liste
//BFS02 rDoc.pFrameViewList->Insert(pFrameView, nCount);
//BFS02 }
//BFS02 else
//BFS02 {
//BFS02 // FrameView kann wieder geloescht werden
//BFS02 delete pFrameView;
//BFS02 }
//BFS02
//BFS02 // Fehler ?
//BFS02 if (rIn.GetError() != 0)
//BFS02 return (rIn);
//BFS02 }
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 5)
//BFS02 {
//BFS02 rIn >> rDoc.bStartPresWithNavigator;
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 6)
//BFS02 {
//BFS02 rIn >> rDoc.bPresLockedPages;
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 7)
//BFS02 {
//BFS02 rIn >> rDoc.bPresAlwaysOnTop;
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 8)
//BFS02 {
//BFS02 rIn >> rDoc.bOnlineSpell;
//BFS02 rIn >> rDoc.bHideSpell;
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 9)
//BFS02 {
//BFS02 rIn >> rDoc.bPresFullScreen;
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 10)
//BFS02 {
//BFS02 rIn.ReadByteString( rDoc.aPresPage, eSysSet );
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 11)
//BFS02 {
//BFS02 rIn >> rDoc.bAnimationAllowed;
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 12)
//BFS02 {
//BFS02 UINT16 nDocType;
//BFS02 rIn >> nDocType;
//BFS02 rDoc.eDocType = (DocumentType) nDocType;
//BFS02 // existiert eine DocShell bestimmt diese den DocType
//BFS02 if(rDoc.pDocSh)
//BFS02 {
//BFS02 if(NULL != PTR_CAST(::sd::GraphicDocShell,rDoc.pDocSh))
//BFS02 rDoc.eDocType = DOCUMENT_TYPE_DRAW;
//BFS02 else
//BFS02 rDoc.eDocType = DOCUMENT_TYPE_IMPRESS;
//BFS02 }
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 13)
//BFS02 {
//BFS02 // Keine Aenderung
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 14)
//BFS02 {
//BFS02 // CustomShow aktiv
//BFS02 rIn >> rDoc.bCustomShow;
//BFS02
//BFS02 ULONG nCustomShowCount = 0;
//BFS02 rIn >> nCustomShowCount;
//BFS02
//BFS02 if (nCustomShowCount > 0)
//BFS02 {
//BFS02 // Liste erzeugen
//BFS02 rDoc.GetCustomShowList(TRUE);
//BFS02 rDoc.pCustomShowList->Clear();
//BFS02
//BFS02 for (ULONG i = 0; i < nCustomShowCount; i++)
//BFS02 {
//BFS02 // Einzelne CustomShows lesen
//BFS02 SdCustomShow* pCustomShow = new SdCustomShow(&rDoc);
//BFS02 rIn >> *pCustomShow;
//BFS02
//BFS02 // Die CustomShows gehoert nun der Liste
//BFS02 rDoc.pCustomShowList->Insert(pCustomShow, i);
//BFS02
//BFS02 // Fehler ?
//BFS02 if (rIn.GetError() != 0)
//BFS02 return (rIn);
//BFS02 }
//BFS02
//BFS02 // Aktuelle CustomShow selektieren
//BFS02 ULONG nCurPos;
//BFS02 rIn >> nCurPos;
//BFS02 rDoc.pCustomShowList->Seek(nCurPos);
//BFS02 }
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 15)
//BFS02 {
//BFS02 ULONG nTmp;
//BFS02 rIn >> nTmp;
//BFS02 rDoc.SetPageNumType( (SvxNumType) nTmp );
//BFS02 }
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 17)
//BFS02 {
//BFS02 ULONG nPauseSec;
//BFS02 BOOL bShowLogo;
//BFS02
//BFS02 rIn >> nPauseSec >> bShowLogo;
//BFS02 rDoc.SetPresPause( nPauseSec );
//BFS02 rDoc.SetPresShowLogo( bShowLogo );
//BFS02 }
//BFS02 else
//BFS02 rDoc.SetPresPause( 0 );
//BFS02
//BFS02 if (rDoc.nFileFormatVersion >= 18)
//BFS02 {
//BFS02 // Keine Aenderung
//BFS02 }
//BFS02
//BFS02 /**************************************************************************
//BFS02 * So machts der Writer, und so muessen es alle machen:
//BFS02 * Bug 9714: Der CharSet an den Fonts muss geaendert werden, wenn
//BFS02 * es der globale CharSet ist (MT)
//BFS02 **************************************************************************/
//BFS02 SfxItemPool& rPool = rDoc.GetItemPool();
//BFS02 USHORT nMaxItems = rPool.GetItemCount(EE_CHAR_FONTINFO);
//BFS02 SvxFontItem* pItem;
//BFS02 CharSet eSrcSet = ((SdPage*) rDoc.GetPage(0))->GetCharSet();
//BFS02
//BFS02 for (USHORT n = 0; n < nMaxItems; ++n)
//BFS02 {
//BFS02 pItem = (SvxFontItem*) rPool.GetItem(EE_CHAR_FONTINFO, n);
//BFS02 if (pItem && pItem->GetCharSet() == eSrcSet)
//BFS02 {
//BFS02 pItem->GetCharSet() = eSysSet;
//BFS02 }
//BFS02 }
//BFS02
//BFS02 return rIn;
//BFS02}
2000-09-18 23:16:46 +00:00
/*************************************************************************
| *
| * " Alle Dias " - Parameter der Praesentation aendern
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetPresAll ( BOOL bNewPresAll )
{
bPresAll = bNewPresAll ;
}
/*************************************************************************
| *
| * " Endlos " - Parameter der Praesentation aendern
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetPresEndless ( BOOL bNewPresEndless )
{
bPresEndless = bNewPresEndless ;
}
/*************************************************************************
| *
| * " Manuell " - Parameter der Praesentation aendern
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetPresManual ( BOOL bNewPresManual )
{
bPresManual = bNewPresManual ;
}
/*************************************************************************
| *
| * " Maus sichtbar " - Parameter der Praesentation aendern
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetPresMouseVisible ( BOOL bNewPresMouseVisible )
{
bPresMouseVisible = bNewPresMouseVisible ;
}
/*************************************************************************
| *
| * " Maus als Stift " - Parameter der Praesentation aendern
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetPresMouseAsPen ( BOOL bNewPresMouseAsPen )
{
bPresMouseAsPen = bNewPresMouseAsPen ;
}
/*************************************************************************
| *
| * " Ab Dia " - Parameter der Praesentation aendern
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetPresFirstPage ( ULONG nNewPresFirstPage )
{
nPresFirstPage = nNewPresFirstPage ;
}
/*************************************************************************
| *
| * SetChanged ( ) , das Model wurde geaendert
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2003-11-24 16:07:37 +00:00
void SdDrawDocument : : SetChanged ( sal_Bool bFlag )
2000-09-18 23:16:46 +00:00
{
if ( pDocSh )
{
if ( bNewOrLoadCompleted & & pDocSh - > IsEnableSetModified ( ) )
{
// weitergeben an Basisklasse
FmFormModel : : SetChanged ( bFlag ) ;
// an ObjectShell weiterleiten
pDocSh - > SetModified ( bFlag ) ;
}
}
else
{
// weitergeben an Basisklasse
FmFormModel : : SetChanged ( bFlag ) ;
}
}
2002-07-19 11:06:18 +00:00
/*************************************************************************
| *
| * NbcSetChanged ( ) , the model changed , don ' t call anybody else
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2003-11-24 16:07:37 +00:00
void SdDrawDocument : : NbcSetChanged ( sal_Bool bFlag )
2002-07-19 11:06:18 +00:00
{
// #100237# forward to baseclass
FmFormModel : : SetChanged ( bFlag ) ;
}
2000-09-18 23:16:46 +00:00
/*************************************************************************
| *
| * NewOrLoadCompleted
| *
| * Wird gerufen , wenn das Dokument geladen wurde bzw . feststeht , dass es
| * nicht mehr geladen wird .
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : NewOrLoadCompleted ( DocCreationMode eMode )
{
if ( eMode = = NEW_DOC )
{
// Neues Dokument:
// Praesentations- und Standardvorlagen erzeugen,
// Pool fuer virtuelle Controls erzeugen
CreateLayoutTemplates ( ) ;
( ( SdStyleSheetPool * ) pStyleSheetPool ) - > CreatePseudosIfNecessary ( ) ;
}
else if ( eMode = = DOC_LOADED )
{
2001-04-26 16:11:09 +00:00
// Dokument wurde geladen:
2000-09-18 23:16:46 +00:00
2002-01-18 14:36:06 +00:00
CheckMasterPages ( ) ;
2000-09-18 23:16:46 +00:00
if ( GetMasterSdPageCount ( PK_STANDARD ) > 1 )
RemoveUnnessesaryMasterPages ( NULL , TRUE , FALSE ) ;
2001-02-26 09:28:07 +00:00
for ( USHORT i = 0 ; i < GetPageCount ( ) ; i + + )
2000-09-18 23:16:46 +00:00
{
// Check for correct layout names
SdPage * pPage = ( SdPage * ) GetPage ( i ) ;
2004-07-12 13:55:03 +00:00
if ( pPage - > TRG_HasMasterPage ( ) )
2000-09-18 23:16:46 +00:00
{
2004-07-12 13:55:03 +00:00
SdPage & rMaster = ( SdPage & ) pPage - > TRG_GetMasterPage ( ) ;
if ( rMaster . GetLayoutName ( ) ! = pPage - > GetLayoutName ( ) )
{
pPage - > SetLayoutName ( rMaster . GetLayoutName ( ) ) ;
}
2000-09-18 23:16:46 +00:00
}
}
2001-07-03 13:21:16 +00:00
for ( USHORT nPage = 0 ; nPage < GetMasterPageCount ( ) ; nPage + + )
2000-09-18 23:16:46 +00:00
{
2001-07-03 13:21:16 +00:00
// LayoutName and PageName must be the same
SdPage * pPage = ( SdPage * ) GetMasterPage ( nPage ) ;
2000-09-18 23:16:46 +00:00
2001-07-03 13:21:16 +00:00
String aName ( pPage - > GetLayoutName ( ) ) ;
aName . Erase ( aName . SearchAscii ( SD_LT_SEPARATOR ) ) ;
if ( aName ! = pPage - > GetName ( ) )
pPage - > SetName ( aName ) ;
2002-04-24 10:05:16 +00:00
SdrObject * pPresObj = pPage - > GetPresObj ( PRESOBJ_BACKGROUND ) ;
2001-07-03 13:21:16 +00:00
if ( pPage - > GetPageKind ( ) = = PK_STANDARD )
{
DBG_ASSERT ( pPresObj , " Masterpage without a background object! " ) ;
if ( pPresObj & & pPresObj - > GetOrdNum ( ) ! = 0 )
pPage - > NbcSetObjectOrdNum ( pPresObj - > GetOrdNum ( ) , 0 ) ;
}
2002-04-24 10:05:16 +00:00
else
{
DBG_ASSERT ( pPresObj = = NULL , " Non Standard Masterpage with a background object! \n (This assertion is ok for old binary files) " ) ;
if ( pPresObj )
{
pPage - > RemoveObject ( pPresObj - > GetOrdNum ( ) ) ;
2004-03-30 14:43:59 +00:00
pPage - > RemovePresObj ( pPresObj ) ;
2002-04-24 10:05:16 +00:00
delete pPresObj ;
}
}
2000-09-18 23:16:46 +00:00
}
// Sprachabhaengige Namen der StandardLayer erzeugen
RestoreLayerNames ( ) ;
// Sprachabhaengige Namen der Vorlagen setzen
( ( SdStyleSheetPool * ) pStyleSheetPool ) - > UpdateStdNames ( ) ;
// Ggf. fehlende Vorlagen erzeugen (es gab z.B. frueher keinen Subtitle)
( ( SdStyleSheetPool * ) pStyleSheetPool ) - > CreatePseudosIfNecessary ( ) ;
}
// Standardvorlage an der Drawing Engine setzen
String aName ( SdResId ( STR_STANDARD_STYLESHEET_NAME ) ) ;
SfxStyleSheet * pSheet = ( SfxStyleSheet * ) pStyleSheetPool - >
Find ( aName , SFX_STYLE_FAMILY_PARA ) ;
SetDefaultStyleSheet ( pSheet ) ;
// Draw-Outliner und Dokument Outliner initialisieren,
// aber nicht den globalen Outliner, den der ist ja nicht
// dokumentspezifisch wie StyleSheetPool und StyleRequestHandler
2004-03-30 14:43:59 +00:00
: : Outliner & rDrawOutliner = GetDrawOutliner ( ) ;
2000-09-18 23:16:46 +00:00
rDrawOutliner . SetStyleSheetPool ( ( SfxStyleSheetPool * ) GetStyleSheetPool ( ) ) ;
rDrawOutliner . SetMinDepth ( 0 ) ;
ULONG nCntrl = rDrawOutliner . GetControlWord ( ) ;
if ( bOnlineSpell )
nCntrl | = EE_CNTRL_ONLINESPELLING ;
else
nCntrl & = ~ EE_CNTRL_ONLINESPELLING ;
rDrawOutliner . SetControlWord ( nCntrl ) ;
// HitTest-Outliner und Dokument Outliner initialisieren,
// aber nicht den globalen Outliner, den der ist ja nicht
// dokumentspezifisch wie StyleSheetPool und StyleRequestHandler
pHitTestOutliner - > SetStyleSheetPool ( ( SfxStyleSheetPool * ) GetStyleSheetPool ( ) ) ;
pHitTestOutliner - > SetMinDepth ( 0 ) ;
if ( pOutliner )
{
pOutliner - > SetStyleSheetPool ( ( SfxStyleSheetPool * ) GetStyleSheetPool ( ) ) ;
pOutliner - > SetMinDepth ( 0 ) ;
}
if ( pInternalOutliner )
{
pInternalOutliner - > SetStyleSheetPool ( ( SfxStyleSheetPool * ) GetStyleSheetPool ( ) ) ;
pInternalOutliner - > SetMinDepth ( 0 ) ;
}
if ( eMode = = DOC_LOADED )
{
if ( nFileFormatVersion < = 17 & & nFileFormatVersion ! = SDIOCOMPAT_VERSIONDONTKNOW )
{
// Da sich die Bedeutung der SvxLRSpaceItems ab nFileFormatVersion = 16
// geaendert hat (Bullet-Handling des Outliners), muss fuer aeltere Versionen
// eine Korrektur vorgenommen werden.
// Bis Version 17 gab es noch diverse Probleme
( ( SdStyleSheetPool * ) pStyleSheetPool ) - > AdjustLRSpaceItems ( ) ;
}
// Praesentationsobjekte muessen wieder Listener der entsprechenden
// Vorlagen werden
SdStyleSheetPool * pSPool = ( SdStyleSheetPool * ) GetStyleSheetPool ( ) ;
SfxStyleSheet * pSheet = NULL ;
2002-01-09 13:40:05 +00:00
USHORT nPage , nPageCount ;
// #96323# create missing layout style sheets for broken documents
// that where created with the 5.2
nPageCount = GetMasterSdPageCount ( PK_STANDARD ) ;
for ( nPage = 0 ; nPage < nPageCount ; nPage + + )
{
SdPage * pPage = GetMasterSdPage ( nPage , PK_STANDARD ) ;
pSPool - > CreateLayoutStyleSheets ( pPage - > GetName ( ) , sal_True ) ;
}
2000-09-18 23:16:46 +00:00
// Standard- und Notizseiten:
2002-01-09 13:40:05 +00:00
for ( nPage = 0 ; nPage < GetPageCount ( ) ; nPage + + )
2000-09-18 23:16:46 +00:00
{
SdPage * pPage = ( SdPage * ) GetPage ( nPage ) ;
2001-12-07 08:55:23 +00:00
if ( nFileFormatVersion < = 4 )
pPage - > CreateTitleAndLayout ( ) ;
2004-03-30 14:43:59 +00:00
NewOrLoadCompleted ( pPage , pSPool ) ;
2000-10-18 11:07:10 +00:00
}
2000-09-18 23:16:46 +00:00
2000-10-18 11:07:10 +00:00
// Masterpages:
for ( nPage = 0 ; nPage < GetMasterPageCount ( ) ; nPage + + )
{
SdPage * pPage = ( SdPage * ) GetMasterPage ( nPage ) ;
2000-09-18 23:16:46 +00:00
2004-03-30 14:43:59 +00:00
NewOrLoadCompleted ( pPage , pSPool ) ;
2000-09-18 23:16:46 +00:00
// BackgroundObjekt vor Selektion schuetzen #62144#
SdrObject * pBackObj = pPage - > GetPresObj ( PRESOBJ_BACKGROUND ) ;
if ( pBackObj )
pBackObj - > SetMarkProtect ( TRUE ) ;
}
}
bNewOrLoadCompleted = TRUE ;
/**************************************************************************
* Alle gelinkten Pages aktualisieren
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
SdPage * pPage = NULL ;
USHORT nMaxSdPages = GetSdPageCount ( PK_STANDARD ) ;
for ( USHORT nSdPage = 0 ; nSdPage < nMaxSdPages ; nSdPage + + )
{
pPage = ( SdPage * ) GetSdPage ( nSdPage , PK_STANDARD ) ;
if ( pPage & & pPage - > GetFileName ( ) . Len ( ) & & pPage - > GetBookmarkName ( ) . Len ( ) )
{
pPage - > SetModel ( this ) ;
}
}
2001-12-18 14:03:13 +00:00
UpdateAllLinks ( ) ;
SetChanged ( FALSE ) ;
}
/** updates all links, only links in this document should by resolved */
void SdDrawDocument : : UpdateAllLinks ( )
{
2000-09-18 23:16:46 +00:00
if ( ! pDocLockedInsertingLinks & & pLinkManager & & pLinkManager - > GetLinks ( ) . Count ( ) )
{
pDocLockedInsertingLinks = this ; // lock inserting links. only links in this document should by resolved
pLinkManager - > UpdateAllLinks ( ) ; // query box: update all links?
if ( pDocLockedInsertingLinks = = this )
pDocLockedInsertingLinks = NULL ; // unlock inserting links
}
}
2004-03-30 14:43:59 +00:00
/** this loops over the presentation objectes of a page and repairs some new settings
from old binary files and resets all default strings for empty presentation objects .
*/
void SdDrawDocument : : NewOrLoadCompleted ( SdPage * pPage , SdStyleSheetPool * pSPool )
{
SdrObjListIter aShapeIter ( * pPage ) ;
while ( aShapeIter . IsMore ( ) )
{
OutlinerParaObject * pOPO = aShapeIter . Next ( ) - > GetOutlinerParaObject ( ) ;
if ( pOPO )
{
if ( pOPO - > GetOutlinerMode ( ) = = OUTLINERMODE_DONTKNOW )
pOPO - > SetOutlinerMode ( OUTLINERMODE_TEXTOBJECT ) ;
pOPO - > FinishLoad ( pSPool ) ;
}
}
PresentationObjectList : : iterator aIter ( pPage - > GetPresObjList ( ) . begin ( ) ) ;
const PresentationObjectList : : iterator aEnd ( pPage - > GetPresObjList ( ) . end ( ) ) ;
if ( aIter ! = aEnd )
{
// Listen mit Titel- und Gliederungsvorlagen erstellen
String aName = pPage - > GetLayoutName ( ) ;
aName . Erase ( aName . SearchAscii ( SD_LT_SEPARATOR ) ) ;
List * pOutlineList = pSPool - > CreateOutlineSheetList ( aName ) ;
SfxStyleSheet * pTitleSheet = ( SfxStyleSheet * )
pSPool - > GetTitleSheet ( aName ) ;
// jetzt nach Titel- und Gliederungstextobjekten suchen und
// Objekte zu Listenern machen
while ( aIter ! = aEnd )
{
SdrObject * pObj = ( * aIter ) . mpObject ;
if ( pObj - > GetObjInventor ( ) = = SdrInventor )
{
OutlinerParaObject * pOPO = pObj - > GetOutlinerParaObject ( ) ;
UINT16 nId = pObj - > GetObjIdentifier ( ) ;
if ( nId = = OBJ_TITLETEXT )
{
if ( pOPO & & pOPO - > GetOutlinerMode ( ) = = OUTLINERMODE_DONTKNOW )
pOPO - > SetOutlinerMode ( OUTLINERMODE_TITLEOBJECT ) ;
// TRUE: harte Attribute dabei nicht loeschen
if ( pTitleSheet )
pObj - > SetStyleSheet ( pTitleSheet , TRUE ) ;
}
else if ( nId = = OBJ_OUTLINETEXT )
{
if ( pOPO & & pOPO - > GetOutlinerMode ( ) = = OUTLINERMODE_DONTKNOW )
pOPO - > SetOutlinerMode ( OUTLINERMODE_OUTLINEOBJECT ) ;
for ( USHORT nSheet = 0 ; nSheet < 10 ; nSheet + + )
{
SfxStyleSheet * pSheet = ( SfxStyleSheet * ) pOutlineList - > GetObject ( nSheet ) ;
if ( pSheet )
{
pObj - > StartListening ( * pSheet ) ;
if ( nSheet = = 0 )
// Textrahmen hoert auf StyleSheet der Ebene1
pObj - > NbcSetStyleSheet ( pSheet , TRUE ) ;
}
}
}
if ( pObj - > ISA ( SdrTextObj ) & & pObj - > IsEmptyPresObj ( ) & & pPage )
{
PresObjKind ePresObjKind = ( * aIter ) . meKind ;
String aString ( pPage - > GetPresObjText ( ePresObjKind ) ) ;
if ( aString . Len ( ) )
{
sd : : Outliner * pInternalOutl = GetInternalOutliner ( TRUE ) ;
pInternalOutl - > SetMinDepth ( 0 ) ;
pPage - > SetObjText ( ( SdrTextObj * ) pObj , pInternalOutl , ePresObjKind , aString ) ;
pObj - > NbcSetStyleSheet ( pPage - > GetStyleSheetForPresObj ( ePresObjKind ) , TRUE ) ;
pInternalOutl - > Clear ( ) ;
}
}
}
aIter + + ;
}
delete pOutlineList ;
}
}
2000-09-18 23:16:46 +00:00
/*************************************************************************
| *
| * Lokaler Outliner , welcher fuer den Gliederungsmodus verwendet wird
| * In diesen Outliner werden ggf . OutlinerViews inserted !
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2004-01-20 09:25:48 +00:00
: : sd : : Outliner * SdDrawDocument : : GetOutliner ( BOOL bCreateOutliner )
2000-09-18 23:16:46 +00:00
{
if ( ! pOutliner & & bCreateOutliner )
{
2004-01-20 09:25:48 +00:00
pOutliner = new : : sd : : Outliner ( this , OUTLINERMODE_TEXTOBJECT ) ;
2000-09-18 23:16:46 +00:00
if ( pDocSh )
2002-07-26 07:32:44 +00:00
pOutliner - > SetRefDevice ( SD_MOD ( ) - > GetRefDevice ( * pDocSh ) ) ;
2000-09-18 23:16:46 +00:00
pOutliner - > SetDefTab ( nDefaultTabulator ) ;
pOutliner - > SetStyleSheetPool ( ( SfxStyleSheetPool * ) GetStyleSheetPool ( ) ) ;
pOutliner - > SetMinDepth ( 0 ) ;
}
return ( pOutliner ) ;
}
/*************************************************************************
| *
| * Interner Outliner , welcher fuer die Erzeugung von Textobjekten
| * verwendet wird .
| * In diesen Outliner werden keine OutlinerViews inserted !
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2004-01-20 09:25:48 +00:00
: : sd : : Outliner * SdDrawDocument : : GetInternalOutliner ( BOOL bCreateOutliner )
2000-09-18 23:16:46 +00:00
{
if ( ! pInternalOutliner & & bCreateOutliner )
{
2004-01-20 09:25:48 +00:00
pInternalOutliner = new : : sd : : Outliner ( this , OUTLINERMODE_TEXTOBJECT ) ;
2000-09-18 23:16:46 +00:00
// MT:
// Dieser Outliner wird nur fuer das Erzeugen spezieller Textobjekte
// verwendet. Da in diesen Textobjekten keine Portion-Informationen
// gespeichert werden muessen, kann/soll der Update-Mode immer FALSE bleiben.
pInternalOutliner - > SetUpdateMode ( FALSE ) ;
pInternalOutliner - > EnableUndo ( FALSE ) ;
if ( pDocSh )
2002-07-26 07:32:44 +00:00
pInternalOutliner - > SetRefDevice ( SD_MOD ( ) - > GetRefDevice ( * pDocSh ) ) ;
2000-09-18 23:16:46 +00:00
pInternalOutliner - > SetDefTab ( nDefaultTabulator ) ;
pInternalOutliner - > SetStyleSheetPool ( ( SfxStyleSheetPool * ) GetStyleSheetPool ( ) ) ;
pInternalOutliner - > SetMinDepth ( 0 ) ;
}
DBG_ASSERT ( ! pInternalOutliner | | ( pInternalOutliner - > GetUpdateMode ( ) = = FALSE ) , " InternalOutliner: UpdateMode = TRUE ! " ) ;
DBG_ASSERT ( ! pInternalOutliner | | ( pInternalOutliner - > IsUndoEnabled ( ) = = FALSE ) , " InternalOutliner: Undo = TRUE ! " ) ;
// MT: Wer ihn vollmuellt, macht ihn auch gleich wieder leer:
// Vorteile:
// a) Keine unnoetigen Clear-Aufrufe
// b) Kein Muell im Speicher.
DBG_ASSERT ( ! pInternalOutliner | | ( ( pInternalOutliner - > GetParagraphCount ( ) = = 1 ) & & ( pInternalOutliner - > GetText ( pInternalOutliner - > GetParagraph ( 0 ) ) . Len ( ) = = 0 ) ) , " InternalOutliner: Nicht leer! " ) ;
return pInternalOutliner ;
}
/*************************************************************************
| *
| * beim Starten der Praesentation den Navigator hochfahren oder nicht
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetStartPresWithNavigator ( BOOL bStart )
{
bStartPresWithNavigator = bStart ;
}
/*************************************************************************
| *
| * in der Praesentation bei einem Klick in die Flaeche nicht die Seite wechslen
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetPresLockedPages ( BOOL bLock )
{
bPresLockedPages = bLock ;
}
/*************************************************************************
| *
| * Praesentation immer oberstes Fenster oder nicht
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetPresAlwaysOnTop ( BOOL bOnTop )
{
bPresAlwaysOnTop = bOnTop ;
}
/*************************************************************************
| *
| * Praesentation im Vollbild - Modus oder im Fenster
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetPresFullScreen ( BOOL bNewFullScreen )
{
bPresFullScreen = bNewFullScreen ;
}
/*************************************************************************
| *
| * OnlineSpelling ein / aus
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetOnlineSpell ( BOOL bIn )
{
bOnlineSpell = bIn ;
ULONG nCntrl = 0 ;
if ( pOutliner )
{
nCntrl = pOutliner - > GetControlWord ( ) ;
if ( bOnlineSpell )
nCntrl | = EE_CNTRL_ONLINESPELLING ;
else
nCntrl & = ~ EE_CNTRL_ONLINESPELLING ;
pOutliner - > SetControlWord ( nCntrl ) ;
}
if ( pInternalOutliner )
{
nCntrl = pInternalOutliner - > GetControlWord ( ) ;
if ( bOnlineSpell )
nCntrl | = EE_CNTRL_ONLINESPELLING ;
else
nCntrl & = ~ EE_CNTRL_ONLINESPELLING ;
pInternalOutliner - > SetControlWord ( nCntrl ) ;
}
2004-03-30 14:43:59 +00:00
: : Outliner & rOutliner = GetDrawOutliner ( ) ;
2000-09-18 23:16:46 +00:00
nCntrl = rOutliner . GetControlWord ( ) ;
if ( bOnlineSpell )
nCntrl | = EE_CNTRL_ONLINESPELLING ;
else
nCntrl & = ~ EE_CNTRL_ONLINESPELLING ;
rOutliner . SetControlWord ( nCntrl ) ;
if ( bOnlineSpell )
{
StartOnlineSpelling ( ) ;
}
else
{
StopOnlineSpelling ( ) ;
}
}
/*************************************************************************
| *
| * OnlineSpelling : Markierung ein / aus
| *
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
void SdDrawDocument : : SetHideSpell ( BOOL bIn )
{
bHideSpell = bIn ;
ULONG nCntrl = 0 ;
if ( pOutliner )
{
nCntrl = pOutliner - > GetControlWord ( ) ;
if ( bHideSpell )
nCntrl | = EE_CNTRL_NOREDLINES ;
else
nCntrl & = ~ EE_CNTRL_NOREDLINES ;
pOutliner - > SetControlWord ( nCntrl ) ;
}
if ( pInternalOutliner )
{
nCntrl = pInternalOutliner - > GetControlWord ( ) ;
if ( bHideSpell )
nCntrl | = EE_CNTRL_NOREDLINES ;
else
nCntrl & = ~ EE_CNTRL_NOREDLINES ;
pInternalOutliner - > SetControlWord ( nCntrl ) ;
}
2004-03-30 14:43:59 +00:00
: : Outliner & rOutliner = GetDrawOutliner ( ) ;
2000-09-18 23:16:46 +00:00
nCntrl = rOutliner . GetControlWord ( ) ;
if ( bHideSpell )
nCntrl | = EE_CNTRL_NOREDLINES ;
else
nCntrl & = ~ EE_CNTRL_NOREDLINES ;
rOutliner . SetControlWord ( nCntrl ) ;
}
2000-11-26 18:24:16 +00:00
uno : : Reference < uno : : XInterface > SdDrawDocument : : createUnoModel ( )
{
uno : : Reference < uno : : XInterface > xModel ;
try
{
2004-04-02 12:20:25 +00:00
if ( pDocSh )
xModel = pDocSh - > GetModel ( ) ;
2000-11-26 18:24:16 +00:00
}
catch ( uno : : RuntimeException & e )
{
2001-03-21 15:20:10 +00:00
e ; // to avoid a compiler warning...
2000-11-26 18:24:16 +00:00
}
2000-09-18 23:16:46 +00:00
2000-11-26 18:24:16 +00:00
return xModel ;
}
2002-12-11 15:23:04 +00:00
SvxNumType SdDrawDocument : : GetPageNumType ( ) const
{
return ePageNumType ;
2003-04-24 13:35:54 +00:00
}
void SdDrawDocument : : SetPrinterIndependentLayout ( sal_Int32 nMode )
{
// #108104#
// DBG_ASSERT (pDocSh!=NULL, "No available document shell to set ref device at.");
switch ( nMode )
{
case : : com : : sun : : star : : document : : PrinterIndependentLayout : : DISABLED :
case : : com : : sun : : star : : document : : PrinterIndependentLayout : : ENABLED :
// Just store supported modes and inform the doc shell.
mnPrinterIndependentLayout = nMode ;
// #108104#
// Since it is possible that a SdDrawDocument is constructed without a
// SdDrawDocShell the pointer member pDocSh needs to be tested
// before the call is executed. This is e.-g. used for copy/paste.
if ( pDocSh )
{
pDocSh - > UpdateRefDevice ( ) ;
}
break ;
default :
// Ignore unknown values.
break ;
}
}
sal_Int32 SdDrawDocument : : GetPrinterIndependentLayout ( void )
{
return mnPrinterIndependentLayout ;
}
2003-05-16 13:16:34 +00:00
bool SdDrawDocument : : IsStartWithPresentation ( ) const
{
return mbStartWithPresentation ;
}
void SdDrawDocument : : SetStartWithPresentation ( bool bStartWithPresentation )
{
mbStartWithPresentation = bStartWithPresentation ;
}
2003-10-27 12:29:26 +00:00
// #109538#
void SdDrawDocument : : PageListChanged ( )
{
mpDrawPageListWatcher - > Invalidate ( ) ;
}
// #109538#
void SdDrawDocument : : MasterPageListChanged ( )
{
mpMasterPageListWatcher - > Invalidate ( ) ;
}
// eof