| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef SW_SHELLIO_HXX |
| #define SW_SHELLIO_HXX |
| |
| #include <memory> |
| #include <boost/utility.hpp> |
| |
| #include <com/sun/star/uno/Reference.h> |
| #include <com/sun/star/embed/XStorage.hpp> |
| #include <sfx2/docfile.hxx> |
| #include <sfx2/fcontnr.hxx> |
| #include <sot/formats.hxx> |
| #include <sot/storage.hxx> |
| #include <svtools/parhtml.hxx> |
| #include <tools/string.hxx> |
| #include <tools/date.hxx> |
| #include <tools/time.hxx> |
| #include <tools/datetime.hxx> |
| #include <tools/ref.hxx> |
| #include <tools/urlobj.hxx> |
| #include <swdllapi.h> |
| #include <swtypes.hxx> |
| #include <docfac.hxx> // SwDocFac |
| #include <errhdl.hxx> |
| #include <iodetect.hxx> |
| |
| // einige Forward - Deklarationen |
| class SfxFilterContainer; |
| class SfxFilter; |
| class SfxItemPool; |
| class SfxItemSet; |
| class SfxMedium; |
| class SvPtrarr; |
| class SvStream; |
| class SvStrings; |
| class SvxFontItem; |
| class SvxMacroTableDtor; |
| //class Sw3Io; |
| class SwCntntNode; |
| class SwCrsrShell; |
| class SwDoc; |
| class SwPaM; |
| class SwTextBlocks; |
| struct SwPosition; |
| struct Writer_Impl; |
| |
| // ab so vielen chars wird ein mit einem ASCII/W4W-Reader eingelesener |
| // Absatz zwangsweise umgebrochen. Muss immer groesser als 200 sein !!! |
| #define MAX_ASCII_PARA 10000 |
| |
| |
| class SW_DLLPUBLIC SwAsciiOptions |
| { |
| String sFont; |
| rtl_TextEncoding eCharSet; |
| sal_uInt16 nLanguage; |
| 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; } |
| |
| sal_uInt16 GetLanguage() const { return nLanguage; } |
| void SetLanguage( sal_uInt16 nVal ) { nLanguage = nVal; } |
| |
| LineEnd GetParaFlags() const { return eCRLF_Flag; } |
| void SetParaFlags( LineEnd eVal ) { eCRLF_Flag = eVal; } |
| |
| void Reset() |
| { |
| sFont.Erase(); |
| eCRLF_Flag = GetSystemLineEnd(); |
| eCharSet = ::gsl_getSystemTextEncoding(); |
| nLanguage = 0; |
| } |
| // for the automatic conversion (mail/news/...) |
| void ReadUserData( const String& ); |
| void WriteUserData( String& ); |
| |
| SwAsciiOptions() { Reset(); } |
| }; |
| |
| /**************** SwReader/Reader ************************/ |
| // Basisklasse der moeglichen Optionen fuer einen speziellen Reader |
| class Reader; |
| // Ruft den Reader mit seinen Optionen, Dokument, Cursor etc. |
| class SwReader; |
| // SwRead ist der Pointer auf die Read-Optionen-Basisklasse |
| typedef Reader *SwRead; |
| |
| class SwgReaderOption |
| { |
| SwAsciiOptions aASCIIOpts; |
| union |
| { |
| sal_Bool bFmtsOnly; |
| struct |
| { |
| sal_Bool bFrmFmts: 1; |
| sal_Bool bPageDescs: 1; |
| sal_Bool bTxtFmts: 1; |
| sal_Bool bNumRules: 1; |
| sal_Bool bMerge:1; |
| } Fmts; |
| } What; |
| |
| public: |
| void ResetAllFmtsOnly() { What.bFmtsOnly = 0; } |
| sal_Bool IsFmtsOnly() const { return What.bFmtsOnly; } |
| |
| sal_Bool IsFrmFmts() const { return What.Fmts.bFrmFmts; } |
| void SetFrmFmts( const sal_Bool bNew) { What.Fmts.bFrmFmts = bNew; } |
| |
| sal_Bool IsPageDescs() const { return What.Fmts.bPageDescs; } |
| void SetPageDescs( const sal_Bool bNew) { What.Fmts.bPageDescs = bNew; } |
| |
| sal_Bool IsTxtFmts() const { return What.Fmts.bTxtFmts; } |
| void SetTxtFmts( const sal_Bool bNew) { What.Fmts.bTxtFmts = bNew; } |
| |
| sal_Bool IsNumRules() const { return What.Fmts.bNumRules; } |
| void SetNumRules( const sal_Bool bNew) { What.Fmts.bNumRules = bNew; } |
| |
| sal_Bool IsMerge() const { return What.Fmts.bMerge; } |
| void SetMerge( const sal_Bool bNew ) { What.Fmts.bMerge = bNew; } |
| |
| 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; |
| SotStorageRef pStg; |
| com::sun::star::uno::Reference < com::sun::star::embed::XStorage > xStg; |
| SfxMedium* pMedium; // wer ein Medium haben will (W4W) |
| |
| SwPaM* pCrsr; |
| String aFileName; |
| String sBaseURL; |
| |
| public: |
| /* |
| * Initiales Einlesen. Dokument wird erst beim Read(..) angelegt. |
| * JP 25.04.95: oder falls es mitgegeben wird, in dieses. |
| * Sonderfall fuer Load mit Sw3Reader |
| */ |
| //SwReader( SotStorage&, const String& rFilename, SwDoc *pDoc = 0 ); |
| //SwReader( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >&, const String& rFilename, SwDoc *pDoc = 0 ); |
| SwReader( SfxMedium&, const String& rFilename, SwDoc *pDoc = 0 ); |
| /* |
| * In ein existierendes Dokument einlesen, Dokument und |
| * Position im Dokument werden aus dem SwPaM uebernommen. |
| */ |
| SwReader( SvStream&, const String& rFilename, const String& rBaseURL, SwPaM& ); |
| //SwReader( SotStorage&, const String& rFilename, SwPaM& ); |
| SwReader( SfxMedium&, const String& rFilename, SwPaM& ); |
| SwReader( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >&, const String& rFilename, SwPaM& ); |
| |
| /* |
| * Nur SwReader::Read(...) ist die Export-Schnittstelle!!! |
| */ |
| sal_Bool NeedsPasswd( const Reader& ); |
| sal_Bool CheckPasswd( const String&, const Reader& ); |
| sal_uLong Read( const Reader& ); |
| |
| // ask for glossaries |
| sal_Bool HasGlossaries( const Reader& ); |
| sal_Bool ReadGlossaries( const Reader&, SwTextBlocks&, sal_Bool bSaveRelFiles ); |
| |
| const String& GetBaseURL() const { return sBaseURL;} |
| |
| protected: |
| void SetBaseURL( const String& rURL ) { sBaseURL = rURL; } |
| }; |
| |
| |
| |
| /* */ |
| /**************** SPEZIELLE Reader ************************/ |
| |
| // spezielle - Reader koennen beides sein !! (Excel, W4W, .. ) |
| #define SW_STREAM_READER 1 |
| #define SW_STORAGE_READER 2 |
| |
| class SW_DLLPUBLIC Reader |
| { |
| friend class SwReader; |
| SwDoc* pTemplate; |
| String aTemplateNm; |
| //String sBaseURL; |
| |
| Date aDStamp; |
| Time aTStamp; |
| DateTime aChkDateTime; |
| |
| protected: |
| SvStream* pStrm; |
| SotStorageRef pStg; |
| com::sun::star::uno::Reference < com::sun::star::embed::XStorage > xStg; |
| SfxMedium* pMedium; // wer ein Medium haben will (W4W) |
| |
| SwgReaderOption aOpt; |
| sal_Bool bInsertMode : 1; |
| sal_Bool bTmplBrowseMode : 1; |
| sal_Bool bReadUTF8: 1; // Stream als UTF-8 interpretieren |
| sal_Bool bBlockMode: 1; |
| sal_Bool bOrganizerMode : 1; |
| sal_Bool bHasAskTemplateName : 1; |
| sal_Bool bIgnoreHTMLComments : 1; |
| |
| virtual String GetTemplateName() const; |
| |
| public: |
| Reader(); |
| virtual ~Reader(); |
| |
| virtual int GetReaderType(); |
| SwgReaderOption& GetReaderOpt() { return aOpt; } |
| |
| virtual void SetFltName( const String& rFltNm ); |
| static void SetNoOutlineNum( SwDoc& rDoc ); |
| |
| // den Item-Set eines Frm-Formats an das alte Format anpassen |
| static void ResetFrmFmtAttrs( SfxItemSet &rFrmSet ); |
| |
| // die Rahmen-/Grafik-/OLE-Vorlagen an das alte Format (ohne |
| // Umrandung etc.) anpassen |
| static void ResetFrmFmts( SwDoc& rDoc ); |
| |
| // Die Filter-Vorlage laden, setzen und wieder freigeben |
| SwDoc* GetTemplateDoc(); |
| sal_Bool SetTemplate( SwDoc& rDoc ); |
| void ClearTemplate(); |
| void SetTemplateName( const String& rDir ); |
| void MakeHTMLDummyTemplateDoc(); |
| |
| sal_Bool IsReadUTF8() const { return bReadUTF8; } |
| void SetReadUTF8( sal_Bool bSet ) { bReadUTF8 = bSet; } |
| |
| sal_Bool IsBlockMode() const { return bBlockMode; } |
| void SetBlockMode( sal_Bool bSet ) { bBlockMode = bSet; } |
| |
| sal_Bool IsOrganizerMode() const { return bOrganizerMode; } |
| void SetOrganizerMode( sal_Bool bSet ) { bOrganizerMode = bSet; } |
| |
| void SetIgnoreHTMLComments( sal_Bool bSet ) { bIgnoreHTMLComments = bSet; } |
| |
| virtual sal_Bool HasGlossaries() const; |
| virtual sal_Bool ReadGlossaries( SwTextBlocks&, sal_Bool bSaveRelFiles ) const; |
| |
| // read the sections of the document, which is equal to the medium. |
| // returns the count of it |
| virtual sal_uInt16 GetSectionList( SfxMedium& rMedium, |
| SvStrings& rStrings ) const; |
| |
| SotStorageRef getSotStorageRef() { return pStg; }; |
| void setSotStorageRef(SotStorageRef pStgRef) { pStg = pStgRef; }; |
| |
| private: |
| virtual sal_uLong Read(SwDoc &, const String& rBaseURL, SwPaM &,const String &)=0; |
| |
| // alle die die Streams / Storages nicht geoeffnet brauchen, |
| // muessen die Methode ueberladen (W4W!!) |
| virtual int SetStrmStgPtr(); |
| }; |
| |
| class AsciiReader: public Reader |
| { |
| friend class SwReader; |
| virtual sal_uLong Read( SwDoc &, const String& rBaseURL, SwPaM &,const String &); |
| public: |
| AsciiReader(): Reader() {} |
| }; |
| |
| /*class SwgReader: public Reader |
| { |
| virtual sal_uLong Read( SwDoc &, const String& rBaseURL, SwPaM &,const String &); |
| }; |
| */ |
| class SW_DLLPUBLIC StgReader : public Reader |
| { |
| String aFltName; |
| |
| protected: |
| sal_uLong OpenMainStream( SotStorageStreamRef& rRef, sal_uInt16& rBuffSize ); |
| |
| public: |
| virtual int GetReaderType(); |
| const String& GetFltName() { return aFltName; } |
| virtual void SetFltName( const String& r ); |
| }; |
| |
| |
| /*class Sw3Reader : public StgReader |
| { |
| Sw3Io* pIO; |
| virtual sal_uLong Read( SwDoc &, const String& rBaseURL, SwPaM &,const String &); |
| public: |
| Sw3Reader() : pIO( 0 ) {} |
| |
| void SetSw3Io( Sw3Io* pIo ) { pIO = pIo; } |
| |
| // read the sections of the document, which is equal to the medium. |
| // returns the count of it |
| virtual sal_uInt16 GetSectionList( SfxMedium& rMedium, |
| SvStrings& rStrings ) const; |
| };*/ |
| |
| /* */ |
| //////////////////////////////////////////////////////////////////////////// |
| |
| // Der uebergebene Stream muss dynamisch angelegt werden und |
| // vor dem Loeschen der Instanz per Stream() angefordert |
| // und geloescht werden! |
| |
| class SwImpBlocks; |
| |
| class SW_DLLPUBLIC SwTextBlocks |
| { |
| // friend class Sw2TextBlocks; |
| // friend class Sw3IoImp; |
| SwImpBlocks* pImp; |
| sal_uLong nErr; |
| |
| public: |
| SwTextBlocks( const String& ); |
| ~SwTextBlocks(); |
| |
| void Flush(){} |
| |
| SwDoc* GetDoc(); |
| void ClearDoc(); // Doc-Inhalt loeschen |
| const String& GetName(); |
| void SetName( const String& ); |
| sal_uLong GetError() const { return nErr; } |
| |
| String GetBaseURL() const; |
| void SetBaseURL( const String& rURL ); |
| |
| sal_Bool IsOld() const; |
| sal_uLong ConvertToNew(); // Textbausteine konvertieren |
| |
| sal_uInt16 GetCount() const; // Anzahl Textbausteine ermitteln |
| sal_uInt16 GetIndex( const String& ) const; // Index fuer Kurznamen ermitteln |
| sal_uInt16 GetLongIndex( const String& ) const; //Index fuer Langnamen ermitteln |
| const String& GetShortName( sal_uInt16 ) const; // Kurzname fuer Index zurueck |
| const String& GetLongName( sal_uInt16 ) const; // Langname fuer Index zurueck |
| |
| sal_Bool Delete( sal_uInt16 ); // Loeschen |
| sal_uInt16 Rename( sal_uInt16, const String*, const String* ); // Umbenennen |
| sal_uLong CopyBlock( SwTextBlocks& rSource, String& rSrcShort, |
| const String& rLong ); // Block kopieren |
| |
| sal_Bool BeginGetDoc( sal_uInt16 ); // Textbaustein einlesen |
| void EndGetDoc(); // Textbaustein wieder loslassen |
| |
| sal_Bool BeginPutDoc( const String&, const String& ); // Speichern Beginn |
| sal_uInt16 PutDoc(); // Speichern Ende |
| |
| sal_uInt16 PutText( const String&, const String&, const String& ); // Speichern( Kurzn., Text) |
| |
| sal_Bool IsOnlyTextBlock( sal_uInt16 ) const; |
| sal_Bool IsOnlyTextBlock( const String& rShort ) const; |
| |
| const String& GetFileName() const; // Dateiname von pImp |
| sal_Bool IsReadOnly() const; // ReadOnly-Flag von pImp |
| |
| sal_Bool GetMacroTable( sal_uInt16 nIdx, SvxMacroTableDtor& rMacroTbl ); |
| sal_Bool SetMacroTable( sal_uInt16 nIdx, const SvxMacroTableDtor& rMacroTbl ); |
| |
| sal_Bool StartPutMuchBlockEntries(); |
| void EndPutMuchBlockEntries(); |
| }; |
| |
| // BEGIN source/filter/basflt/fltini.cxx |
| |
| extern void _InitFilter(); |
| extern void _FinitFilter(); |
| |
| extern SwRead ReadAscii, /*ReadSwg, ReadSw3, */ReadHTML, ReadXML; |
| |
| //SW_DLLPUBLIC SwRead SwGetReaderSw3(); |
| SW_DLLPUBLIC SwRead SwGetReaderXML(); |
| |
| // END source/filter/basflt/fltini.cxx |
| |
| |
| extern sal_Bool SetHTMLTemplate( SwDoc &rDoc ); //Fuer Vorlagen aus HTML.vor laden shellio.cxx |
| |
| |
| /* */ |
| ///////////////////////////////////////////////////////////////////////////// |
| |
| /* |
| * Schreiben, Writer |
| */ |
| |
| |
| /* Basis-Klasse aller Writer */ |
| |
| class IDocumentSettingAccess; |
| class IDocumentStylePoolAccess; |
| |
| class SW_DLLPUBLIC Writer |
| : public SvRefBase |
| , private ::boost::noncopyable |
| { |
| SwAsciiOptions aAscOpts; |
| String sBaseURL; |
| |
| void _AddFontItem( SfxItemPool& rPool, const SvxFontItem& rFont ); |
| void _AddFontItems( SfxItemPool& rPool, sal_uInt16 nWhichId ); |
| |
| ::std::auto_ptr<Writer_Impl> m_pImpl; |
| |
| protected: |
| |
| SwPaM* pOrigPam; // der letze zu bearbeitende Pam |
| const String* pOrigFileName; |
| |
| void ResetWriter(); |
| sal_Bool CopyNextPam( SwPaM ** ); |
| |
| void PutNumFmtFontsInAttrPool(); |
| void PutEditEngFontsInAttrPool( sal_Bool bIncl_CJK_CTL = sal_True ); |
| void PutCJKandCTLFontsInAttrPool(); |
| |
| virtual sal_uLong WriteStream() = 0; |
| void SetBaseURL( const String& rURL ) { sBaseURL = rURL; } |
| |
| IDocumentSettingAccess* getIDocumentSettingAccess(); |
| const IDocumentSettingAccess* getIDocumentSettingAccess() const; |
| |
| IDocumentStylePoolAccess* getIDocumentStylePoolAccess(); |
| const IDocumentStylePoolAccess* getIDocumentStylePoolAccess() const; |
| |
| public: |
| SwDoc* pDoc; |
| SwPaM* pCurPam; |
| 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; |
| |
| Writer(); |
| virtual ~Writer(); |
| |
| 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 ); |
| |
| virtual void SetPasswd( const String& ); |
| virtual void SetVersion( const String&, long ); |
| virtual sal_Bool IsStgWriter() const; |
| // virtual sal_Bool IsSw3Writer() const; |
| |
| void SetShowProgress( sal_Bool bFlag = sal_False ) { bShowProgress = bFlag; } |
| |
| const String* GetOrigFileName() const { return pOrigFileName; } |
| |
| const SwAsciiOptions& GetAsciiOptions() const { return aAscOpts; } |
| void SetAsciiOptions( const SwAsciiOptions& rOpt ) { aAscOpts = rOpt; } |
| |
| const String& GetBaseURL() const { return sBaseURL;} |
| |
| // suche die naechste Bookmark-Position aus der Bookmark-Tabelle |
| sal_Int32 FindPos_Bkmk( const SwPosition& rPos ) const; |
| // build a bookmark table, which is sort by the node position. The |
| // OtherPos of the bookmarks also inserted. |
| void CreateBookmarkTbl(); |
| // search alle Bookmarks in the range and return it in the Array |
| sal_uInt16 GetBookmarks( const SwCntntNode& rNd, |
| xub_StrLen nStt, xub_StrLen nEnd, |
| SvPtrarr& rArr ); |
| |
| // lege einen neuen PaM an der Position an |
| static SwPaM * NewSwPaM(SwDoc & rDoc, |
| sal_uLong const nStartIdx, sal_uLong const nEndIdx); |
| |
| // kopiere ggfs. eine lokale Datei ins Internet |
| sal_Bool CopyLocalFileToINet( String& rFileNm ); |
| |
| // Stream-spezifische Routinen, im Storage-Writer NICHT VERWENDEN! |
| |
| // Optimierung der Ausgabe auf den Stream. |
| SvStream& OutLong( SvStream& rStrm, long nVal ); |
| SvStream& OutULong( SvStream& rStrm, sal_uLong nVal ); |
| |
| // Hex-Zahl ausgeben, default ist 2.stellige Zahl |
| SvStream& OutHex( SvStream& rStrm, sal_uLong nHex, sal_uInt8 nLen = 2 ); |
| // 4-st. Hex-Zahl ausgeben |
| inline SvStream& OutHex4( SvStream& rStrm, sal_uInt16 nHex ) |
| { return OutHex( rStrm, nHex, 4 ); } |
| |
| inline SvStream& OutHex( sal_uInt16 nHex, sal_uInt8 nLen = 2 ) { return OutHex( Strm(), nHex, nLen ); } |
| inline SvStream& OutHex4( sal_uInt16 nHex ) { return OutHex( Strm(), nHex, 4 ); } |
| inline SvStream& OutLong( long nVal ) { return OutLong( Strm(), nVal ); } |
| inline SvStream& OutULong( sal_uLong nVal ) { return OutULong( Strm(), nVal ); } |
| |
| void SetStream(SvStream *const pStream); |
| SvStream& Strm(); |
| |
| void SetOrganizerMode( sal_Bool bSet ) { bOrganizerMode = bSet; } |
| }; |
| |
| #ifndef SW_DECL_WRITER_DEFINED |
| #define SW_DECL_WRITER_DEFINED |
| SV_DECL_REF(Writer) |
| #endif |
| SV_IMPL_REF(Writer) |
| |
| // Basisklasse fuer alle Storage-Writer |
| class SW_DLLPUBLIC StgWriter : public Writer |
| { |
| protected: |
| String aFltName; |
| SotStorageRef pStg; |
| com::sun::star::uno::Reference < com::sun::star::embed::XStorage > xStg; |
| |
| // Fehler beim Aufruf erzeugen |
| virtual sal_uLong WriteStream(); |
| virtual sal_uLong WriteStorage() = 0; |
| virtual sal_uLong WriteMedium( SfxMedium& ) = 0; |
| |
| using Writer::Write; |
| |
| public: |
| StgWriter() : Writer() {} |
| |
| virtual sal_Bool IsStgWriter() const; |
| |
| 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 ); |
| |
| SotStorage& GetStorage() const { return *pStg; } |
| }; |
| |
| /*class Sw3Writer : public StgWriter |
| { |
| Sw3Io* pIO; |
| sal_Bool bSaveAs : 1; |
| |
| virtual sal_uLong WriteStorage(); |
| virtual sal_uLong WriteMedium( SfxMedium& ); |
| |
| public: |
| Sw3Writer() : pIO( 0 ), bSaveAs( sal_False ) {} |
| |
| virtual sal_Bool IsSw3Writer() const; |
| }; |
| |
| */ |
| |
| // Schnittstellenklasse fuer den allgemeinen Zugriff auf die |
| // speziellen Writer |
| |
| class SwWriter |
| { |
| SvStream* pStrm; |
| SotStorageRef pStg; |
| com::sun::star::uno::Reference < com::sun::star::embed::XStorage > xStg; |
| SfxMedium* pMedium; |
| |
| SwPaM* pOutPam; |
| SwCrsrShell *pShell; |
| SwDoc &rDoc; |
| |
| //String sBaseURL; |
| |
| sal_Bool bWriteAll; |
| |
| public: |
| sal_uLong Write( WriterRef& rxWriter, const String* = 0); |
| |
| SwWriter( SvStream&, SwCrsrShell &,sal_Bool bWriteAll = sal_False ); |
| SwWriter( SvStream&, SwDoc & ); |
| SwWriter( SvStream&, SwPaM &, sal_Bool bWriteAll = sal_False ); |
| |
| // SwWriter( SotStorage&, SwCrsrShell &,sal_Bool bWriteAll = sal_False ); |
| SwWriter( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >&, SwDoc& ); |
| // SwWriter( SotStorage&, SwPaM&, sal_Bool bWriteAll = sal_False ); |
| |
| SwWriter( SfxMedium&, SwCrsrShell &,sal_Bool bWriteAll = sal_False ); |
| SwWriter( SfxMedium&, SwDoc & ); |
| // SwWriter( SfxMedium&, SwPaM&, sal_Bool bWriteAll = sal_False ); |
| |
| //const String& GetBaseURL() const { return sBaseURL;} |
| }; |
| |
| |
| /* */ |
| ///////////////////////////////////////////////////////////////////////////// |
| |
| typedef Reader* (*FnGetReader)(); |
| typedef void (*FnGetWriter)(const String&, const String& rBaseURL, WriterRef&); |
| sal_uLong SaveOrDelMSVBAStorage( SfxObjectShell&, SotStorage&, sal_Bool, const String& ); |
| sal_uLong GetSaveWarningOfMSVBAStorage( SfxObjectShell &rDocS ); |
| |
| struct SwReaderWriterEntry |
| { |
| Reader* pReader; |
| FnGetReader fnGetReader; |
| FnGetWriter fnGetWriter; |
| sal_Bool bDelReader; |
| |
| SwReaderWriterEntry( const FnGetReader fnReader, const FnGetWriter fnWriter, sal_Bool bDel ) |
| : pReader( NULL ), fnGetReader( fnReader ), fnGetWriter( fnWriter ), bDelReader( bDel ) |
| {} |
| |
| /// Get access to the reader |
| Reader* GetReader(); |
| |
| /// Get access to the writer |
| void GetWriter( const String& rNm, const String& rBaseURL, WriterRef& xWrt ) const; |
| }; |
| |
| namespace SwReaderWriter |
| { |
| /// Return reader based on ReaderWriterEnum |
| Reader* GetReader( ReaderWriterEnum eReader ); |
| |
| /// Return reader based on the name |
| Reader* GetReader( const String& rFltName ); |
| |
| /// Return writer based on the name |
| void GetWriter( const String& rFltName, const String& rBaseURL, WriterRef& xWrt ); |
| } |
| |
| void GetRTFWriter( const String&, const String&, WriterRef& ); |
| void GetASCWriter( const String&, const String&, WriterRef& ); |
| //void GetSw3Writer( 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& ); |
| |
| #endif |