2010-10-14 08:30:41 +02:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
2000-09-18 16:15:01 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-10 10:35:11 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2008-04-10 10:35:11 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2008-04-10 10:35:11 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2008-04-10 10:35:11 +00:00
|
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
|
|
* only, as published by the Free Software Foundation.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2008-04-10 10:35:11 +00:00
|
|
|
* OpenOffice.org is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU Lesser General Public License version 3 for more details
|
|
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
2008-04-10 10:35:11 +00:00
|
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
|
|
* <http://www.openoffice.org/license.html>
|
|
|
|
* for a copy of the LGPLv3 License.
|
2000-09-18 16:15:01 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
2010-04-28 17:13:01 +02:00
|
|
|
#ifndef SW_SHELLIO_HXX
|
|
|
|
#define SW_SHELLIO_HXX
|
|
|
|
|
|
|
|
#include <memory>
|
2010-04-29 14:27:02 +02:00
|
|
|
#include <boost/utility.hpp>
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2004-10-04 17:59:42 +00:00
|
|
|
#include <com/sun/star/uno/Reference.h>
|
|
|
|
#include <com/sun/star/embed/XStorage.hpp>
|
2009-01-05 14:06:42 +00:00
|
|
|
#include <sfx2/docfile.hxx>
|
|
|
|
#include <sfx2/fcontnr.hxx>
|
|
|
|
#include <sot/formats.hxx>
|
|
|
|
#include <sot/storage.hxx>
|
|
|
|
#include <svtools/parhtml.hxx>
|
2000-09-18 16:15:01 +00:00
|
|
|
#include <tools/string.hxx>
|
|
|
|
#include <tools/date.hxx>
|
|
|
|
#include <tools/time.hxx>
|
|
|
|
#include <tools/datetime.hxx>
|
|
|
|
#include <tools/ref.hxx>
|
2009-01-05 14:06:42 +00:00
|
|
|
#include <swdllapi.h>
|
2000-09-18 16:15:01 +00:00
|
|
|
#include <swtypes.hxx>
|
|
|
|
#include <docfac.hxx> // SwDocFac
|
2009-01-05 14:06:42 +00:00
|
|
|
#include <iodetect.hxx>
|
2012-03-02 09:18:51 +02:00
|
|
|
#include <IMark.hxx>
|
2004-11-17 14:19:05 +00:00
|
|
|
|
2003-09-19 07:42:40 +00:00
|
|
|
class SfxFilterContainer;
|
2000-09-18 16:15:01 +00:00
|
|
|
class SfxFilter;
|
|
|
|
class SfxItemPool;
|
|
|
|
class SfxItemSet;
|
|
|
|
class SfxMedium;
|
|
|
|
class SvStream;
|
|
|
|
class SvxFontItem;
|
|
|
|
class SvxMacroTableDtor;
|
|
|
|
class SwCntntNode;
|
|
|
|
class SwCrsrShell;
|
|
|
|
class SwDoc;
|
|
|
|
class SwPaM;
|
|
|
|
class SwTextBlocks;
|
2011-12-29 22:26:06 +13:00
|
|
|
class vector;
|
2000-09-18 16:15:01 +00:00
|
|
|
struct SwPosition;
|
|
|
|
struct Writer_Impl;
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Defines the count of chars at which a paragraph read via ASCII/W4W-Reader
|
|
|
|
// is forced to wrap. It has to be always greater than 200!!!
|
2000-09-18 16:15:01 +00:00
|
|
|
#define MAX_ASCII_PARA 10000
|
|
|
|
|
|
|
|
|
2004-08-23 07:38:11 +00:00
|
|
|
class SW_DLLPUBLIC SwAsciiOptions
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
|
|
|
String sFont;
|
|
|
|
rtl_TextEncoding eCharSet;
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_uInt16 nLanguage;
|
2000-09-18 16:15:01 +00:00
|
|
|
LineEnd eCRLF_Flag;
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
const String& GetFontName() const { return sFont; }
|
|
|
|
void SetFontName( const String& rFont ) { sFont = rFont; }
|
|
|
|
|
|
|
|
rtl_TextEncoding GetCharSet() const { return eCharSet; }
|
|
|
|
void SetCharSet( rtl_TextEncoding nVal ) { eCharSet = nVal; }
|
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_uInt16 GetLanguage() const { return nLanguage; }
|
|
|
|
void SetLanguage( sal_uInt16 nVal ) { nLanguage = nVal; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
LineEnd GetParaFlags() const { return eCRLF_Flag; }
|
|
|
|
void SetParaFlags( LineEnd eVal ) { eCRLF_Flag = eVal; }
|
|
|
|
|
|
|
|
void Reset()
|
|
|
|
{
|
|
|
|
sFont.Erase();
|
|
|
|
eCRLF_Flag = GetSystemLineEnd();
|
2011-11-24 12:06:54 +01:00
|
|
|
eCharSet = ::osl_getThreadTextEncoding();
|
2000-09-18 16:15:01 +00:00
|
|
|
nLanguage = 0;
|
|
|
|
}
|
|
|
|
// for the automatic conversion (mail/news/...)
|
|
|
|
void ReadUserData( const String& );
|
|
|
|
void WriteUserData( String& );
|
|
|
|
|
|
|
|
SwAsciiOptions() { Reset(); }
|
|
|
|
};
|
|
|
|
|
|
|
|
/**************** SwReader/Reader ************************/
|
2011-04-18 20:18:04 +02:00
|
|
|
// Base class of possible options for a special reader.
|
2000-09-18 16:15:01 +00:00
|
|
|
class Reader;
|
2011-04-18 20:18:04 +02:00
|
|
|
// Calls reader with its options, document, cursor etc.
|
2000-09-18 16:15:01 +00:00
|
|
|
class SwReader;
|
2011-04-18 20:18:04 +02:00
|
|
|
// SwRead is pointer to the read-options base class.
|
2000-09-18 16:15:01 +00:00
|
|
|
typedef Reader *SwRead;
|
|
|
|
|
|
|
|
class SwgReaderOption
|
|
|
|
{
|
|
|
|
SwAsciiOptions aASCIIOpts;
|
|
|
|
union
|
|
|
|
{
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool bFmtsOnly;
|
2000-09-18 16:15:01 +00:00
|
|
|
struct
|
|
|
|
{
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool bFrmFmts: 1;
|
|
|
|
sal_Bool bPageDescs: 1;
|
|
|
|
sal_Bool bTxtFmts: 1;
|
|
|
|
sal_Bool bNumRules: 1;
|
|
|
|
sal_Bool bMerge:1;
|
2000-09-18 16:15:01 +00:00
|
|
|
} Fmts;
|
|
|
|
} What;
|
|
|
|
|
|
|
|
public:
|
|
|
|
void ResetAllFmtsOnly() { What.bFmtsOnly = 0; }
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool IsFmtsOnly() const { return What.bFmtsOnly; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool IsFrmFmts() const { return What.Fmts.bFrmFmts; }
|
|
|
|
void SetFrmFmts( const sal_Bool bNew) { What.Fmts.bFrmFmts = bNew; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool IsPageDescs() const { return What.Fmts.bPageDescs; }
|
|
|
|
void SetPageDescs( const sal_Bool bNew) { What.Fmts.bPageDescs = bNew; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool IsTxtFmts() const { return What.Fmts.bTxtFmts; }
|
|
|
|
void SetTxtFmts( const sal_Bool bNew) { What.Fmts.bTxtFmts = bNew; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool IsNumRules() const { return What.Fmts.bNumRules; }
|
|
|
|
void SetNumRules( const sal_Bool bNew) { What.Fmts.bNumRules = bNew; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool IsMerge() const { return What.Fmts.bMerge; }
|
|
|
|
void SetMerge( const sal_Bool bNew ) { What.Fmts.bMerge = bNew; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
const SwAsciiOptions& GetASCIIOpts() const { return aASCIIOpts; }
|
|
|
|
void SetASCIIOpts( const SwAsciiOptions& rOpts ) { aASCIIOpts = rOpts; }
|
|
|
|
void ResetASCIIOpts() { aASCIIOpts.Reset(); }
|
|
|
|
|
|
|
|
SwgReaderOption()
|
|
|
|
{ ResetAllFmtsOnly(); aASCIIOpts.Reset(); }
|
|
|
|
};
|
|
|
|
|
|
|
|
class SwReader: public SwDocFac
|
|
|
|
{
|
|
|
|
SvStream* pStrm;
|
2004-11-17 14:19:05 +00:00
|
|
|
SotStorageRef pStg;
|
2004-10-04 17:59:42 +00:00
|
|
|
com::sun::star::uno::Reference < com::sun::star::embed::XStorage > xStg;
|
2011-04-18 20:18:04 +02:00
|
|
|
SfxMedium* pMedium; // Who wants to obtain a Medium (W4W).
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
SwPaM* pCrsr;
|
|
|
|
String aFileName;
|
2005-01-11 11:17:13 +00:00
|
|
|
String sBaseURL;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
public:
|
2011-04-18 20:18:04 +02:00
|
|
|
|
|
|
|
// Initial reading. Document is created only at Read(...)
|
|
|
|
// or in case it is given, into that.
|
|
|
|
// Special case for Load with Sw3Reader.
|
2000-09-18 16:15:01 +00:00
|
|
|
SwReader( SfxMedium&, const String& rFilename, SwDoc *pDoc = 0 );
|
2011-04-18 20:18:04 +02:00
|
|
|
|
|
|
|
// Read into existing document.
|
|
|
|
// Document and position in document are taken from SwPaM.
|
2005-01-11 11:17:13 +00:00
|
|
|
SwReader( SvStream&, const String& rFilename, const String& rBaseURL, SwPaM& );
|
2000-09-18 16:15:01 +00:00
|
|
|
SwReader( SfxMedium&, const String& rFilename, SwPaM& );
|
2005-01-25 12:58:38 +00:00
|
|
|
SwReader( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >&, const String& rFilename, SwPaM& );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// The only export interface is SwReader::Read(...)!!!
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool NeedsPasswd( const Reader& );
|
|
|
|
sal_Bool CheckPasswd( const String&, const Reader& );
|
|
|
|
sal_uLong Read( const Reader& );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Ask for glossaries.
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool HasGlossaries( const Reader& );
|
|
|
|
sal_Bool ReadGlossaries( const Reader&, SwTextBlocks&, sal_Bool bSaveRelFiles );
|
2005-01-11 11:17:13 +00:00
|
|
|
|
|
|
|
const String& GetBaseURL() const { return sBaseURL;}
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void SetBaseURL( const String& rURL ) { sBaseURL = rURL; }
|
2000-09-18 16:15:01 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
/**************** Special Readers ************************/
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Special Readers can be both!! (Excel, W4W, .. ).
|
2000-09-18 16:15:01 +00:00
|
|
|
#define SW_STREAM_READER 1
|
|
|
|
#define SW_STORAGE_READER 2
|
|
|
|
|
2009-01-05 14:06:42 +00:00
|
|
|
class SW_DLLPUBLIC Reader
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
|
|
|
friend class SwReader;
|
|
|
|
SwDoc* pTemplate;
|
|
|
|
String aTemplateNm;
|
2005-01-11 11:17:13 +00:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
Date aDStamp;
|
|
|
|
Time aTStamp;
|
|
|
|
DateTime aChkDateTime;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
SvStream* pStrm;
|
2004-11-17 14:19:05 +00:00
|
|
|
SotStorageRef pStg;
|
2004-10-04 17:59:42 +00:00
|
|
|
com::sun::star::uno::Reference < com::sun::star::embed::XStorage > xStg;
|
2011-04-18 20:18:04 +02:00
|
|
|
SfxMedium* pMedium; // Who wants to obtain a Medium (W4W).
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
SwgReaderOption aOpt;
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool bInsertMode : 1;
|
|
|
|
sal_Bool bTmplBrowseMode : 1;
|
2011-04-18 20:18:04 +02:00
|
|
|
sal_Bool bReadUTF8: 1; // Interprete stream as UTF-8.
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool bBlockMode: 1;
|
|
|
|
sal_Bool bOrganizerMode : 1;
|
|
|
|
sal_Bool bHasAskTemplateName : 1;
|
|
|
|
sal_Bool bIgnoreHTMLComments : 1;
|
2001-04-05 14:01:28 +00:00
|
|
|
|
|
|
|
virtual String GetTemplateName() const;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
Reader();
|
|
|
|
virtual ~Reader();
|
|
|
|
|
|
|
|
virtual int GetReaderType();
|
|
|
|
SwgReaderOption& GetReaderOpt() { return aOpt; }
|
|
|
|
|
|
|
|
virtual void SetFltName( const String& rFltNm );
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Adapt item-set of a Frm-Format to the old format.
|
2000-09-18 16:15:01 +00:00
|
|
|
static void ResetFrmFmtAttrs( SfxItemSet &rFrmSet );
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Adapt Frame-/Graphics-/OLE- styles to the old format
|
|
|
|
// (without borders etc.).
|
2000-09-18 16:15:01 +00:00
|
|
|
static void ResetFrmFmts( SwDoc& rDoc );
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Load filter template, set it and release it again.
|
2000-09-18 16:15:01 +00:00
|
|
|
SwDoc* GetTemplateDoc();
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool SetTemplate( SwDoc& rDoc );
|
2000-09-18 16:15:01 +00:00
|
|
|
void ClearTemplate();
|
|
|
|
void SetTemplateName( const String& rDir );
|
|
|
|
void MakeHTMLDummyTemplateDoc();
|
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool IsReadUTF8() const { return bReadUTF8; }
|
|
|
|
void SetReadUTF8( sal_Bool bSet ) { bReadUTF8 = bSet; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool IsBlockMode() const { return bBlockMode; }
|
|
|
|
void SetBlockMode( sal_Bool bSet ) { bBlockMode = bSet; }
|
2001-01-22 12:47:37 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool IsOrganizerMode() const { return bOrganizerMode; }
|
|
|
|
void SetOrganizerMode( sal_Bool bSet ) { bOrganizerMode = bSet; }
|
2001-03-06 10:17:30 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
void SetIgnoreHTMLComments( sal_Bool bSet ) { bIgnoreHTMLComments = bSet; }
|
2002-12-02 10:51:28 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
virtual sal_Bool HasGlossaries() const;
|
|
|
|
virtual sal_Bool ReadGlossaries( SwTextBlocks&, sal_Bool bSaveRelFiles ) const;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Read the sections of the document, which is equal to the medium.
|
|
|
|
// Returns the count of it
|
2011-12-29 22:26:06 +13:00
|
|
|
virtual size_t GetSectionList( SfxMedium& rMedium,
|
|
|
|
std::vector<String*>& rStrings ) const;
|
2005-01-11 11:17:13 +00:00
|
|
|
|
2005-11-10 15:29:40 +00:00
|
|
|
SotStorageRef getSotStorageRef() { return pStg; };
|
2007-09-27 07:09:45 +00:00
|
|
|
void setSotStorageRef(SotStorageRef pStgRef) { pStg = pStgRef; };
|
2005-11-10 15:29:40 +00:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
private:
|
2011-01-17 15:06:54 +01:00
|
|
|
virtual sal_uLong Read(SwDoc &, const String& rBaseURL, SwPaM &,const String &)=0;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Everyone who does not need the streams / storages open
|
|
|
|
// has to overload the method (W4W!!).
|
2000-09-18 16:15:01 +00:00
|
|
|
virtual int SetStrmStgPtr();
|
|
|
|
};
|
|
|
|
|
|
|
|
class AsciiReader: public Reader
|
|
|
|
{
|
|
|
|
friend class SwReader;
|
2011-01-17 15:06:54 +01:00
|
|
|
virtual sal_uLong Read( SwDoc &, const String& rBaseURL, SwPaM &,const String &);
|
2000-09-18 16:15:01 +00:00
|
|
|
public:
|
|
|
|
AsciiReader(): Reader() {}
|
|
|
|
};
|
|
|
|
|
2009-01-05 14:06:42 +00:00
|
|
|
class SW_DLLPUBLIC StgReader : public Reader
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
|
|
|
String aFltName;
|
|
|
|
|
|
|
|
protected:
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_uLong OpenMainStream( SotStorageStreamRef& rRef, sal_uInt16& rBuffSize );
|
2000-09-18 16:15:01 +00:00
|
|
|
public:
|
|
|
|
virtual int GetReaderType();
|
|
|
|
const String& GetFltName() { return aFltName; }
|
|
|
|
virtual void SetFltName( const String& r );
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// The given stream has to be created dynamically and must
|
|
|
|
// be requested via Stream() before the instance is deleted!
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
class SwImpBlocks;
|
|
|
|
|
2004-08-23 07:38:11 +00:00
|
|
|
class SW_DLLPUBLIC SwTextBlocks
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
|
|
|
SwImpBlocks* pImp;
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_uLong nErr;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
SwTextBlocks( const String& );
|
|
|
|
~SwTextBlocks();
|
|
|
|
|
|
|
|
void Flush(){}
|
|
|
|
|
|
|
|
SwDoc* GetDoc();
|
2011-04-18 20:18:04 +02:00
|
|
|
void ClearDoc(); // Delete Doc-contents.
|
2000-09-18 16:15:01 +00:00
|
|
|
const String& GetName();
|
|
|
|
void SetName( const String& );
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_uLong GetError() const { return nErr; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2005-01-11 11:17:13 +00:00
|
|
|
String GetBaseURL() const;
|
|
|
|
void SetBaseURL( const String& rURL );
|
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool IsOld() const;
|
2011-04-18 20:18:04 +02:00
|
|
|
sal_uLong ConvertToNew(); // Convert text modules.
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
sal_uInt16 GetCount() const; // Get count text modules.
|
|
|
|
sal_uInt16 GetIndex( const String& ) const; // Get index of short names.
|
|
|
|
sal_uInt16 GetLongIndex( const String& ) const; // Get index of long names.
|
|
|
|
const String& GetShortName( sal_uInt16 ) const; // Get short name for index.
|
|
|
|
const String& GetLongName( sal_uInt16 ) const; // Get long name for index.
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
sal_Bool Delete( sal_uInt16 );
|
|
|
|
sal_uInt16 Rename( sal_uInt16, const String*, const String* );
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_uLong CopyBlock( SwTextBlocks& rSource, String& rSrcShort,
|
2011-04-18 20:18:04 +02:00
|
|
|
const String& rLong );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
sal_Bool BeginGetDoc( sal_uInt16 ); // Read text modules.
|
|
|
|
void EndGetDoc(); // Release text modules.
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
sal_Bool BeginPutDoc( const String&, const String& ); // Begin save.
|
|
|
|
sal_uInt16 PutDoc(); // End save.
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
sal_uInt16 PutText( const String&, const String&, const String& ); // Save (short name, text).
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool IsOnlyTextBlock( sal_uInt16 ) const;
|
|
|
|
sal_Bool IsOnlyTextBlock( const String& rShort ) const;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
const String& GetFileName() const; // Filename of pImp.
|
|
|
|
sal_Bool IsReadOnly() const; // ReadOnly-flag of pImp.
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool GetMacroTable( sal_uInt16 nIdx, SvxMacroTableDtor& rMacroTbl );
|
|
|
|
sal_Bool SetMacroTable( sal_uInt16 nIdx, const SvxMacroTableDtor& rMacroTbl );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool StartPutMuchBlockEntries();
|
2000-09-18 16:15:01 +00:00
|
|
|
void EndPutMuchBlockEntries();
|
|
|
|
};
|
|
|
|
|
2004-08-23 07:38:11 +00:00
|
|
|
// BEGIN source/filter/basflt/fltini.cxx
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2009-01-05 14:06:42 +00:00
|
|
|
extern SwRead ReadAscii, /*ReadSwg, ReadSw3, */ReadHTML, ReadXML;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2004-08-23 07:38:11 +00:00
|
|
|
SW_DLLPUBLIC SwRead SwGetReaderXML();
|
|
|
|
|
|
|
|
// END source/filter/basflt/fltini.cxx
|
|
|
|
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
extern sal_Bool SetHTMLTemplate( SwDoc &rDoc ); //For templates from HTML before loading shellio.cxx.
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Base-class of all writers.
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2006-08-14 14:31:15 +00:00
|
|
|
class IDocumentSettingAccess;
|
|
|
|
class IDocumentStylePoolAccess;
|
|
|
|
|
2010-04-29 14:27:02 +02:00
|
|
|
class SW_DLLPUBLIC Writer
|
|
|
|
: public SvRefBase
|
|
|
|
, private ::boost::noncopyable
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
|
|
|
SwAsciiOptions aAscOpts;
|
2005-01-11 11:17:13 +00:00
|
|
|
String sBaseURL;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
void _AddFontItem( SfxItemPool& rPool, const SvxFontItem& rFont );
|
2011-01-17 15:06:54 +01:00
|
|
|
void _AddFontItems( SfxItemPool& rPool, sal_uInt16 nWhichId );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2010-04-28 17:13:01 +02:00
|
|
|
::std::auto_ptr<Writer_Impl> m_pImpl;
|
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
protected:
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
SwPaM* pOrigPam; // Last Pam that has to be processed.
|
2000-09-18 16:15:01 +00:00
|
|
|
const String* pOrigFileName;
|
|
|
|
|
|
|
|
void ResetWriter();
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool CopyNextPam( SwPaM ** );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
void PutNumFmtFontsInAttrPool();
|
2011-01-17 15:06:54 +01:00
|
|
|
void PutEditEngFontsInAttrPool( sal_Bool bIncl_CJK_CTL = sal_True );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
virtual sal_uLong WriteStream() = 0;
|
2005-01-11 11:17:13 +00:00
|
|
|
void SetBaseURL( const String& rURL ) { sBaseURL = rURL; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2006-08-14 14:31:15 +00:00
|
|
|
IDocumentSettingAccess* getIDocumentSettingAccess();
|
|
|
|
const IDocumentSettingAccess* getIDocumentSettingAccess() const;
|
|
|
|
|
|
|
|
IDocumentStylePoolAccess* getIDocumentStylePoolAccess();
|
|
|
|
const IDocumentStylePoolAccess* getIDocumentStylePoolAccess() const;
|
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
public:
|
|
|
|
SwDoc* pDoc;
|
|
|
|
SwPaM* pCurPam;
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool bWriteAll : 1;
|
|
|
|
sal_Bool bShowProgress : 1;
|
|
|
|
sal_Bool bWriteClipboardDoc : 1;
|
|
|
|
sal_Bool bWriteOnlyFirstTable : 1;
|
|
|
|
sal_Bool bASCII_ParaAsCR : 1;
|
|
|
|
sal_Bool bASCII_ParaAsBlanc : 1;
|
|
|
|
sal_Bool bASCII_NoLastLineEnd : 1;
|
|
|
|
sal_Bool bUCS2_WithStartChar : 1;
|
|
|
|
sal_Bool bExportPargraphNumbering : 1;
|
|
|
|
|
|
|
|
sal_Bool bBlock : 1;
|
|
|
|
sal_Bool bOrganizerMode : 1;
|
2001-01-22 11:29:52 +00:00
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
Writer();
|
|
|
|
virtual ~Writer();
|
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
virtual sal_uLong Write( SwPaM&, SfxMedium&, const String* = 0 );
|
|
|
|
sal_uLong Write( SwPaM&, SvStream&, const String* = 0 );
|
|
|
|
virtual sal_uLong Write( SwPaM&, const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >&, const String* = 0, SfxMedium* = 0 );
|
|
|
|
virtual sal_uLong Write( SwPaM&, SotStorage&, const String* = 0 );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
virtual void SetPasswd( const String& );
|
|
|
|
virtual void SetVersion( const String&, long );
|
2011-01-17 15:06:54 +01:00
|
|
|
virtual sal_Bool IsStgWriter() const;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
void SetShowProgress( sal_Bool bFlag = sal_False ) { bShowProgress = bFlag; }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
const String* GetOrigFileName() const { return pOrigFileName; }
|
|
|
|
|
|
|
|
const SwAsciiOptions& GetAsciiOptions() const { return aAscOpts; }
|
|
|
|
void SetAsciiOptions( const SwAsciiOptions& rOpt ) { aAscOpts = rOpt; }
|
|
|
|
|
2005-01-11 11:17:13 +00:00
|
|
|
const String& GetBaseURL() const { return sBaseURL;}
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Look up next bookmark position from bookmark-table.
|
CWS-TOOLING: integrate CWS swrefactormarks2
2009-04-09 12:51:41 +0200 b_michaelsen r270689 : #i94949# cleaned up assertions after rebasing
2009-04-08 17:37:08 +0200 b_michaelsen r270658 : fixing sw/source/ui/utlui/makefile.mk
2009-04-07 17:56:54 +0200 b_michaelsen r270606 : added bookctrl.cxx to EXCEPTIONFILES, because this is needed for stl on unxsols4
2009-04-07 17:05:20 +0200 b_michaelsen r270603 : added crbm.cxx to EXCEPTIONFILES, because this is needed for stl on unxsols4
2009-04-02 23:44:38 +0200 b_michaelsen r270436 : CWS-TOOLING: rebase CWS swrefactormarks2 to trunk@270033 (milestone: DEV300:m45)
2009-02-27 16:25:31 +0100 b_michaelsen r268606 : #i94949# fixed Windows buildbreaker
2009-02-25 18:01:13 +0100 b_michaelsen r268464 : #i94949# Bookmarktest document filter roundtrips
2009-02-24 18:23:55 +0100 b_michaelsen r268404 : #i94949# Bookmark unittests
2009-02-23 19:47:44 +0100 b_michaelsen r268370 : #i94949# added unittest for bookmarks
2009-02-23 12:22:07 +0100 b_michaelsen r268348 : #i94949# fixing CheckCrossReferences testcase
2009-02-20 18:12:50 +0100 b_michaelsen r268335 : #i94949# fixing SwXTextRange
2009-02-18 18:32:57 +0100 b_michaelsen r268252 : #i94949# deregistering DdeBookmarks on delete
2009-02-18 18:29:08 +0100 b_michaelsen r268251 : fixing dbgoutsw.cxx for debug builds
2009-02-16 18:42:43 +0100 b_michaelsen r267834 : CWS-TOOLING: rebase CWS swrefactormarks2 to trunk@267171 (milestone: DEV300:m41)
2009-02-12 15:32:02 +0100 b_michaelsen r267667 : #i94949 fixed crossrefbookmark naming
2009-02-11 18:30:08 +0100 b_michaelsen r267624 : #94949# fixing bookmark navigation
2009-02-11 13:55:26 +0100 b_michaelsen r267599 : #i94949# fixed bookmark naming
2009-02-10 17:53:05 +0100 b_michaelsen r267571 : #i94949# renamed HasOtherMarkPos to IsExpanded
2009-02-10 17:23:01 +0100 b_michaelsen r267564 : #i94949# renamed ::sw::bookmark namespace to more fitting ::sw::mark
2009-02-10 16:16:32 +0100 b_michaelsen r267553 : #i94949# creating only CrossRefBookmark per Txtnode
2009-02-10 12:14:05 +0100 b_michaelsen r267547 : #i94949# fixed bookmark count in navigator
2009-02-09 19:12:18 +0100 b_michaelsen r267532 : #i94949# lcl_CopyBookmarks(..) - handle marks on boundaries correctly
2009-02-09 17:32:45 +0100 b_michaelsen r267524 : #i94949# setting the refobject of the DdeBookmark in Sin SwServerObject::SetDdeBookmark(..)
2009-02-09 17:22:15 +0100 b_michaelsen r267523 : #i94949# trying to harden SwServerObject
2009-02-09 16:47:32 +0100 b_michaelsen r267521 : #i94949# lcl_CopyBookmarks(..): try to get the source mark name, if possible
2009-02-09 16:05:42 +0100 b_michaelsen r267519 : #i94949# clearing the OtherMarkPos if PaM has no mark in repositionMark(..), swapping inverted bookmarks without hissing an assertion
2009-02-09 15:55:38 +0100 b_michaelsen r267518 : #i94949# checking for out-of-bounds in SwView::ExecuteStatusLine(..)
2009-02-09 15:23:47 +0100 b_michaelsen r267517 : #i94949# using an UNO_BOOKMARK in ui/dbui/dbinsdlg.cxx
2009-02-09 14:14:47 +0100 b_michaelsen r267514 : #i94949# IDocumentMarkAccess::GetType(..) asserts on unknown type
2009-02-09 14:04:25 +0100 b_michaelsen r267513 : #i94949# using rtl strings instead of tools-strings in CrossRefBookmarks
2009-02-09 13:55:01 +0100 b_michaelsen r267510 : #i94949# using empty string for UnoMark construction
2009-02-09 13:46:46 +0100 b_michaelsen r267509 : #i94949# removed superfluous #includes, removed superfluous member DdeBookmark::bGenerateName, initialized DdeBookmark::m_aRefObj removed superfluous local _FindItem::ClearObj
2009-02-06 14:38:37 +0100 b_michaelsen r267462 : #i94949# fixing FN_STAT_BOOKMARK dispatches
2009-02-05 18:05:07 +0100 b_michaelsen r267436 : #i94949# removing superfluous #includes
2009-02-04 15:51:31 +0100 b_michaelsen r267391 : fixing resync merge error
2009-02-02 19:39:55 +0100 b_michaelsen r267294 : #i94949# bookmark performance
2009-01-30 19:30:51 +0100 b_michaelsen r267229 : #i94949# throwing IllegalArgumentException, if appropriate
2009-01-30 19:29:56 +0100 b_michaelsen r267228 : #i94949# refactored lcl_FillBookmarkArray, comments, constness
2009-01-30 19:23:49 +0100 b_michaelsen r267227 : #i94949# refactored lcl_FillBookmarkArray, comments, constness
2009-01-30 19:16:06 +0100 b_michaelsen r267226 : #i94949# refactored lcl_FillBookmarkArray
2009-01-30 17:59:27 +0100 b_michaelsen r267222 : #i94949# removed superficial #include
2009-01-30 17:50:02 +0100 b_michaelsen r267220 : #i94949# SwXTextRange remembers its UNO bookmark
2009-01-29 20:19:58 +0100 b_michaelsen r267168 : #i94949# implemented IDocumentMarkAccess::findBookmark
2009-01-29 17:22:17 +0100 b_michaelsen r267162 : #i94949# implemented renameMark in Markmanager
2009-01-29 14:17:10 +0100 b_michaelsen r267134 : #i94949# cleanup in SwXBookmark, whitespace
2009-01-29 13:21:54 +0100 b_michaelsen r267125 : #i94949# cleanup in SwXBookmark, whitespace
2009-01-29 13:06:10 +0100 b_michaelsen r267120 : #i94949# cleanup in SwXBookmark, whitespace
2009-01-29 13:00:09 +0100 b_michaelsen r267118 : #i94949# cleanup in SwXBookmark, whitespace
2009-01-29 10:35:10 +0100 b_michaelsen r267101 : #i94949# renamed SetCrsrToBkmk to SetCrsrToMark, moving to start/end of doc if no more bookmarks can be found
2009-01-28 17:05:36 +0100 b_michaelsen r267070 : #i94949# fixed order in aProvNamesId in unocoll.cxx
2009-01-28 15:46:13 +0100 b_michaelsen r267063 : #i94949# documentation
2009-01-28 15:36:59 +0100 b_michaelsen r267062 : #i94949# removing superficial #include
2009-01-28 15:30:36 +0100 b_michaelsen r267061 : #i94949# basic code conventions
2009-01-28 11:14:30 +0100 b_michaelsen r267039 : #i94949# comparing to the actual name of the new mark
2009-01-26 15:22:25 +0100 b_michaelsen r266927 : #i94949# performance fixes
2009-01-14 21:16:56 +0100 b_michaelsen r266332 : #i94949# fixing linux x86-64 compiler warnings
2009-01-14 19:52:06 +0100 b_michaelsen r266331 : #i94949# fixing some compiler warnings
2008-12-15 13:04:49 +0100 b_michaelsen r265474 : #i94949# fixed microsoft compiler warnings
2008-12-12 18:26:02 +0100 b_michaelsen r265434 : #i94949# fixed pro platform buildbreakers
2008-12-11 17:51:24 +0100 b_michaelsen r265342 : CWS-TOOLING: rebase CWS swrefactormarks2 to trunk@264807 (milestone: DEV300:m37)
2008-12-09 18:30:59 +0100 b_michaelsen r265134 : #i94949# fixed IDocumentMarkAccess::GetType for new mark inheritance tree
2008-12-09 16:56:26 +0100 b_michaelsen r265118 : #i94949# fixed deleteMark optimization
2008-12-09 14:55:58 +0100 b_michaelsen r265092 : #i94949# DdeLink and DdeBookmark
2008-12-05 18:28:05 +0100 b_michaelsen r264914 : #i94949# fixed InitDoc in bookmarks
2008-12-02 02:23:51 +0100 b_michaelsen r264649 : #i94949# removed obsolete naming proposal code in SwXTextRange, fixed navigator reminders to forget the oldest reminder when the pool is empty
2008-12-02 02:05:19 +0100 b_michaelsen r264648 : #i94949# using bisect search for delete
2008-12-02 01:58:16 +0100 b_michaelsen r264647 : #i94949# using bisect search for delete
2008-12-02 01:37:33 +0100 b_michaelsen r264646 : #i94949# using bisect search for delete
2008-12-02 01:03:29 +0100 b_michaelsen r264645 : #i94949# fixed deleteMark crash
2008-12-01 20:55:00 +0100 b_michaelsen r264638 : #i94949# removed crossrefs from ui enumerations
2008-12-01 15:48:12 +0100 b_michaelsen r264613 : #i94949# removed superfluous local functions
2008-12-01 15:01:19 +0100 b_michaelsen r264608 : #i94949# optimized insertion of new marks
2008-12-01 14:33:21 +0100 b_michaelsen r264603 : #i94949# simplified code finding Fieldmark for a position
2008-12-01 14:05:55 +0100 b_michaelsen r264598 : #i94949# fixed reverse travelling through marks, removed obsolete getUniqueMarkName()
2008-11-27 18:48:15 +0100 b_michaelsen r264515 : #i94949# fixed _SaveCntntIdx and friends
2008-11-27 15:59:49 +0100 b_michaelsen r264500 : #i94949# fix Mark position only in ctor
2008-11-27 15:52:28 +0100 b_michaelsen r264497 : #i94949# fixed Bug in SwXBookmark, was using pDoc too early
2008-11-26 14:54:22 +0100 b_michaelsen r264396 : #i94949# fixed documentation, simplified navigator reminder code
2008-11-24 20:45:51 +0100 b_michaelsen r264266 : #i94949# removed last obsolete getUniqueMarkName calls
2008-11-24 20:21:35 +0100 b_michaelsen r264265 : #i94949# fixed typo in IDocumentMarkAccess, removed obsolete getUniqueMarkName calls
2008-11-24 18:34:32 +0100 b_michaelsen r264264 : #i94949# repositioning of Marks, removed possibility to delete marks by name in the core, refactoring of navigator reminder generation
2008-11-21 14:08:49 +0100 b_michaelsen r264137 : #i94949# simplified makeMark
2008-11-21 12:07:09 +0100 b_michaelsen r264120 : #i94949# moved ShortName and KeyCode from IMark to IBookmark
2008-11-19 12:50:49 +0100 b_michaelsen r263981 : #i94949# starting refactoring of bookmark naming
2008-11-19 11:31:08 +0100 b_michaelsen r263972 : #i94949# getting rid of obsolete dynamic casts
2008-11-18 19:06:09 +0100 b_michaelsen r263795 : #i94949# getting rid of index based mark access, IDocumentMarkAccess already provides iterators
2008-11-18 17:50:18 +0100 b_michaelsen r263792 : #i94949# getting rid of index based mark access, IDocumentMarkAccess already provides iterators
2008-11-18 16:48:20 +0100 b_michaelsen r263783 : #i94949# removed methods from crsrsh which are already available directly via IDocumentMarkAccess
2008-11-18 11:31:35 +0100 b_michaelsen r263753 : #i94949# cleaning up mark code in crsrsh
2008-11-17 10:15:25 +0100 b_michaelsen r263705 : #i94949# removed possible integer overflow
2008-11-14 18:48:45 +0100 b_michaelsen r263695 : #i94949# management of mark names in MarkManager
2008-11-14 18:23:40 +0100 b_michaelsen r263693 : #i94949# using polymorphism to do mark-specific setup in SwDoc
2008-11-14 16:27:09 +0100 b_michaelsen r263684 : #i94949# got rid of makeCrossRefBookmark
2008-11-14 13:03:32 +0100 b_michaelsen r263674 : #i94949# refactored Correction methods
2008-11-13 12:27:55 +0100 b_michaelsen r263631 : #i94949# got rid of old-style tools assertions in new code
2008-11-12 16:58:16 +0100 b_michaelsen r263608 : #i94949# added assertion for unique names
2008-11-12 16:55:18 +0100 b_michaelsen r263607 : #i94949# maked XFormField deprecated
2008-11-12 13:04:29 +0100 b_michaelsen r263587 : #i94949# replaced IDocumentMarkAccess::GetType with simple dynamic_cast where possible
2008-11-11 18:45:53 +0100 b_michaelsen r263572 : #i94949# cleaned up SwHstryBookmark
2008-11-11 13:48:18 +0100 b_michaelsen r263557 : #i94949# removed dynamic_casts to SwModify by inheriting IMark from it
2008-11-11 11:26:28 +0100 b_michaelsen r263548 : #i94949# fixed SwXBookmark
2008-11-10 17:01:19 +0100 b_michaelsen r263529 : #i94949# fixed DdeBookmarks in clipboard
2008-11-10 16:44:52 +0100 b_michaelsen r263527 : #i94949# formatting
2008-11-10 16:29:16 +0100 b_michaelsen r263526 : #i94949# fixing unoobj.cxx
2008-11-10 16:23:50 +0100 b_michaelsen r263525 : #i94949# cleaning up crossrefbookmark.cxx/.hxx
2008-11-10 16:02:08 +0100 b_michaelsen r263524 : #i94949# Pdf Export should only generate 'real' bookmarks
2008-11-10 15:33:58 +0100 b_michaelsen r263521 : #i94949# removed const_casts
2008-11-10 15:12:06 +0100 b_michaelsen r263520 : #i94949# moved _DelBookmarks into MarksManager
2008-11-07 18:48:38 +0100 b_michaelsen r263480 : #i94949# using iterator interface
2008-11-07 18:41:46 +0100 b_michaelsen r263478 : #i94949# using iterator interface
2008-11-07 18:07:41 +0100 b_michaelsen r263477 : #i94949# using iterator interface
2008-11-07 17:54:41 +0100 b_michaelsen r263476 : #i94949# using iterator interface
2008-11-07 17:44:41 +0100 b_michaelsen r263475 : #i94949# moved correction methods into MarkManager
2008-11-06 18:47:28 +0100 b_michaelsen r263404 : #i94949# getting rid of superfluous const_casts
2008-11-06 17:58:01 +0100 b_michaelsen r263403 : #i94949# no more setting of mark positions outside of the core
2008-11-06 17:08:37 +0100 b_michaelsen r263401 : #i94949# removed setters from IMark
2008-11-06 13:55:25 +0100 b_michaelsen r263383 : #i94949 SwDoc does not implement IDocumentMarkAccess anymore
2008-11-04 18:17:03 +0100 b_michaelsen r263333 : #i94949# began removing IDocumentMarkAccess from SwDoc
2008-11-04 16:48:34 +0100 b_michaelsen r263330 : removing dead code (SwBitArray) found by mst
2008-11-04 16:29:32 +0100 b_michaelsen r263329 : removing dead code (SwBitArray) found by mst
2008-11-04 14:57:48 +0100 b_michaelsen r263326 : removing dead code (SwBitArray) found by mst
2008-11-04 14:50:18 +0100 b_michaelsen r263325 : #i94949# stricter typing in IDocumentMarkAccess
2008-10-24 15:16:27 +0200 b_michaelsen r262647 : #i94949# renamed ::sw::bookmark::SimpleMark to NavigatorReminder to fit the IDocumentMarkAccess enum
2008-10-24 15:10:10 +0200 b_michaelsen r262646 : #i94949# only 'real' bookmark implement IBookmark, Marks also get removed from m_vFieldmarks on delete/clear
2008-10-24 13:06:23 +0200 b_michaelsen r262636 : #i94949# Fieldmark tabnavigation
2008-10-23 12:16:36 +0200 b_michaelsen r262619 : #i94949# Fieldmark classes and filters
2008-10-22 13:17:18 +0200 b_michaelsen r262597 : #i94949# writer import fixes
2008-10-21 11:30:38 +0200 b_michaelsen r262565 : #i94949# renamed methods containing Bookmark in the generic IMark interface
2008-10-20 14:09:02 +0200 b_michaelsen r262318 : #i94949# fixed SwDoc::CorrRel
2008-10-16 22:45:13 +0200 b_michaelsen r262273 : #i94949 simplified Before/After methods
2008-10-16 21:40:57 +0200 b_michaelsen r262271 : #i94949 renamed SimpleMark to NavigatorReminder
2008-10-16 21:15:23 +0200 b_michaelsen r262270 : #i94949 using shared_ptr only in MarkManager
2008-10-16 17:46:37 +0200 b_michaelsen r262269 : #i94949# getFieldmarkBefore and getFieldmarkAfter
2008-10-16 17:12:13 +0200 b_michaelsen r262265 : #i94949# cleanup in crbm.cxx
2008-10-16 12:49:01 +0200 b_michaelsen r262257 : #i94949# fixed usage of invalid iterator, fixed invalid cast
2008-10-15 15:34:20 +0200 b_michaelsen r262239 : #i94949# added moved files
2008-10-15 15:26:45 +0200 b_michaelsen r262237 : #i94949# initial reimplementation of Bookmarks
2009-04-21 15:40:02 +00:00
|
|
|
sal_Int32 FindPos_Bkmk( const SwPosition& rPos ) const;
|
2011-04-18 20:18:04 +02:00
|
|
|
// Build a bookmark table, which is sort by the node position. The
|
2000-09-18 16:15:01 +00:00
|
|
|
// OtherPos of the bookmarks also inserted.
|
|
|
|
void CreateBookmarkTbl();
|
2011-04-18 20:18:04 +02:00
|
|
|
// Search alle Bookmarks in the range and return it in the Array.
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_uInt16 GetBookmarks( const SwCntntNode& rNd,
|
2000-09-18 16:15:01 +00:00
|
|
|
xub_StrLen nStt, xub_StrLen nEnd,
|
2012-03-02 09:18:51 +02:00
|
|
|
std::vector< const ::sw::mark::IMark* >& rArr );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Create new PaM at position.
|
2010-11-25 14:31:10 +01:00
|
|
|
static SwPaM * NewSwPaM(SwDoc & rDoc,
|
2011-02-07 13:06:08 +01:00
|
|
|
sal_uLong const nStartIdx, sal_uLong const nEndIdx);
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// If applicable copy a local file into internet.
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool CopyLocalFileToINet( String& rFileNm );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Stream-specific routines. Do not use in storage-writer!
|
|
|
|
|
|
|
|
// Optimizing output on stream.
|
2000-09-18 16:15:01 +00:00
|
|
|
SvStream& OutLong( SvStream& rStrm, long nVal );
|
2011-01-17 15:06:54 +01:00
|
|
|
SvStream& OutULong( SvStream& rStrm, sal_uLong nVal );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
inline SvStream& OutLong( long nVal ) { return OutLong( Strm(), nVal ); }
|
2011-01-17 15:06:54 +01:00
|
|
|
inline SvStream& OutULong( sal_uLong nVal ) { return OutULong( Strm(), nVal ); }
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2010-04-28 10:55:22 +02:00
|
|
|
void SetStream(SvStream *const pStream);
|
2000-09-18 16:15:01 +00:00
|
|
|
SvStream& Strm();
|
2001-03-06 10:17:30 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
void SetOrganizerMode( sal_Bool bSet ) { bOrganizerMode = bSet; }
|
2000-09-18 16:15:01 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#ifndef SW_DECL_WRITER_DEFINED
|
|
|
|
#define SW_DECL_WRITER_DEFINED
|
|
|
|
SV_DECL_REF(Writer)
|
|
|
|
#endif
|
|
|
|
SV_IMPL_REF(Writer)
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Base class for all storage writers.
|
2009-01-05 14:06:42 +00:00
|
|
|
class SW_DLLPUBLIC StgWriter : public Writer
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
|
|
|
protected:
|
|
|
|
String aFltName;
|
2004-11-17 14:19:05 +00:00
|
|
|
SotStorageRef pStg;
|
2004-10-04 17:59:42 +00:00
|
|
|
com::sun::star::uno::Reference < com::sun::star::embed::XStorage > xStg;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
// Create error at call.
|
2011-01-17 15:06:54 +01:00
|
|
|
virtual sal_uLong WriteStream();
|
|
|
|
virtual sal_uLong WriteStorage() = 0;
|
|
|
|
virtual sal_uLong WriteMedium( SfxMedium& ) = 0;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2007-10-22 14:06:48 +00:00
|
|
|
using Writer::Write;
|
|
|
|
|
2000-09-18 16:15:01 +00:00
|
|
|
public:
|
2004-11-17 14:19:05 +00:00
|
|
|
StgWriter() : Writer() {}
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
virtual sal_Bool IsStgWriter() const;
|
2007-09-27 07:09:45 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
virtual sal_uLong Write( SwPaM&, const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >&, const String* = 0, SfxMedium* = 0 );
|
|
|
|
virtual sal_uLong Write( SwPaM&, SotStorage&, const String* = 0 );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2004-10-04 17:59:42 +00:00
|
|
|
SotStorage& GetStorage() const { return *pStg; }
|
2000-09-18 16:15:01 +00:00
|
|
|
};
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
|
|
|
|
// Interface class for general access on special writers.
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
class SwWriter
|
|
|
|
{
|
|
|
|
SvStream* pStrm;
|
2004-11-17 14:19:05 +00:00
|
|
|
SotStorageRef pStg;
|
2004-10-04 17:59:42 +00:00
|
|
|
com::sun::star::uno::Reference < com::sun::star::embed::XStorage > xStg;
|
2000-09-18 16:15:01 +00:00
|
|
|
SfxMedium* pMedium;
|
|
|
|
|
|
|
|
SwPaM* pOutPam;
|
|
|
|
SwCrsrShell *pShell;
|
|
|
|
SwDoc &rDoc;
|
2005-01-11 11:17:13 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool bWriteAll;
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
public:
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_uLong Write( WriterRef& rxWriter, const String* = 0);
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
SwWriter( SvStream&, SwCrsrShell &,sal_Bool bWriteAll = sal_False );
|
2000-09-18 16:15:01 +00:00
|
|
|
SwWriter( SvStream&, SwDoc & );
|
2011-01-17 15:06:54 +01:00
|
|
|
SwWriter( SvStream&, SwPaM &, sal_Bool bWriteAll = sal_False );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2004-10-04 17:59:42 +00:00
|
|
|
SwWriter( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >&, SwDoc& );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
SwWriter( SfxMedium&, SwCrsrShell &,sal_Bool bWriteAll = sal_False );
|
2000-09-18 16:15:01 +00:00
|
|
|
SwWriter( SfxMedium&, SwDoc & );
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-01-05 14:06:42 +00:00
|
|
|
typedef Reader* (*FnGetReader)();
|
|
|
|
typedef void (*FnGetWriter)(const String&, const String& rBaseURL, WriterRef&);
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_uLong SaveOrDelMSVBAStorage( SfxObjectShell&, SotStorage&, sal_Bool, const String& );
|
|
|
|
sal_uLong GetSaveWarningOfMSVBAStorage( SfxObjectShell &rDocS );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2009-01-05 14:06:42 +00:00
|
|
|
struct SwReaderWriterEntry
|
2000-09-18 16:15:01 +00:00
|
|
|
{
|
2009-01-05 14:06:42 +00:00
|
|
|
Reader* pReader;
|
|
|
|
FnGetReader fnGetReader;
|
|
|
|
FnGetWriter fnGetWriter;
|
2011-01-17 15:06:54 +01:00
|
|
|
sal_Bool bDelReader;
|
2009-01-05 14:06:42 +00:00
|
|
|
|
2011-01-17 15:06:54 +01:00
|
|
|
SwReaderWriterEntry( const FnGetReader fnReader, const FnGetWriter fnWriter, sal_Bool bDel )
|
2009-01-05 14:06:42 +00:00
|
|
|
: pReader( NULL ), fnGetReader( fnReader ), fnGetWriter( fnWriter ), bDelReader( bDel )
|
|
|
|
{}
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
/// Get access to the reader.
|
2009-01-05 14:06:42 +00:00
|
|
|
Reader* GetReader();
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
/// Get access to the writer.
|
2009-01-05 14:06:42 +00:00
|
|
|
void GetWriter( const String& rNm, const String& rBaseURL, WriterRef& xWrt ) const;
|
2000-09-18 16:15:01 +00:00
|
|
|
};
|
|
|
|
|
2009-01-05 14:06:42 +00:00
|
|
|
namespace SwReaderWriter
|
|
|
|
{
|
2011-04-18 20:18:04 +02:00
|
|
|
/// Return reader based on ReaderWriterEnum.
|
2009-01-05 14:06:42 +00:00
|
|
|
Reader* GetReader( ReaderWriterEnum eReader );
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
/// Return reader based on the name.
|
2009-01-05 14:06:42 +00:00
|
|
|
Reader* GetReader( const String& rFltName );
|
|
|
|
|
2011-04-18 20:18:04 +02:00
|
|
|
/// Return writer based on the name.
|
2009-01-05 14:06:42 +00:00
|
|
|
void GetWriter( const String& rFltName, const String& rBaseURL, WriterRef& xWrt );
|
|
|
|
}
|
2000-09-18 16:15:01 +00:00
|
|
|
|
2009-01-05 14:06:42 +00:00
|
|
|
void GetRTFWriter( const String&, const String&, WriterRef& );
|
|
|
|
void GetASCWriter( const String&, const String&, WriterRef& );
|
|
|
|
void GetHTMLWriter( const String&, const String&, WriterRef& );
|
|
|
|
void GetXMLWriter( const String&, const String&, WriterRef& );
|
|
|
|
void GetWW8Writer( const String&, const String&, WriterRef& );
|
2000-09-18 16:15:01 +00:00
|
|
|
|
|
|
|
#endif
|
2010-10-14 08:30:41 +02:00
|
|
|
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|