/************************************************************************* * * $RCSfile: document.hxx,v $ * * $Revision: 1.12 $ * * last change: $Author: tl $ $Date: 2001-08-02 15:31:38 $ * * 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): _______________________________________ * * ************************************************************************/ #ifndef DOCUMENT_HXX #define DOCUMENT_HXX #define SMDLL 1 #ifndef _SVSTOR_HXX //autogen #include #endif #ifndef _SOT_SOTREF_HXX //autogen #include #endif #ifndef _SFX_OBJSH_HXX //autogen #include #endif #ifndef _SFX_INTERNO_HXX //autogen #include #endif #ifndef _SFXLSTNER_HXX //autogen #include #endif #ifndef _SFX_OBJFAC_HXX //autogen #include #endif #ifndef _SV_VIRDEV_HXX //autogen #include #endif #ifndef _FORMAT_HXX #include "format.hxx" #endif #ifndef PARSE_HXX #include "parse.hxx" #endif #ifndef SMMOD_HXX #include "smmod.hxx" #endif class SmNode; class SmSymSetManager; class SfxPrinter; class Printer; #ifndef SO2_DECL_SVSTORAGESTREAM_DEFINED #define SO2_DECL_SVSTORAGESTREAM_DEFINED SO2_DECL_REF(SvStorageStream) #endif #define HINT_DATACHANGED 1004 #define SM30BIDENT ((ULONG)0x534D3033L) #define SM30IDENT ((ULONG)0x30334d53L) #define SM304AIDENT ((ULONG)0x34303330L) #define SM30VERSION ((ULONG)0x00010000L) #define SM50VERSION ((ULONG)0x00010001L) //Unterschied zur SM30VERSION ist //der neue Border im Format. #define FRMIDENT ((ULONG)0x03031963L) #define FRMVERSION ((ULONG)0x00010001L) #define STAROFFICE_XML "StarOffice XML (Math)" #define MATHML_XML "MathML XML (Math)" /* Zugriff auf den Drucker sollte ausschliesslich ueber diese Klasse erfolgen * ========================================================================== * * Der Drucker kann dem Dokument oder auch dem OLE-Container gehoeren. Wenn * das Dokument also eine OLE-Dokument ist, so gehoert der Drucker auch * grundsaetzlich dem Container. Der Container arbeitet aber eventuell mit * einer anderen MapUnit als der Server. Der Drucker wird bezueglich des MapMode * im Konstruktor entsprechend eingestellt und im Destruktor wieder restauriert. * Das bedingt natuerlich, das diese Klasse immer nur kurze Zeit existieren darf * (etwa waehrend des Paints). * Die Kontrolle darueber ob der Drucker selbst angelegt, vom Server besorgt * oder dann auch NULL ist, uebernimmt die DocShell in der Methode GetPrt(), * fuer die der Access auch Friend der DocShell ist. */ class SmDocShell; class EditEngine; class EditEngineItemPool; class SmPrinterAccess { Printer *pPrinter; public: SmPrinterAccess( SmDocShell &rDocShell ); ~SmPrinterAccess(); Printer *GetPrinter() { return pPrinter; } }; //////////////////////////////////////////////////////////// class SmDocShell : public SfxObjectShell, public SfxInPlaceObject, public SfxListener { friend class SmPrinterAccess; String aText; SmFormat aFormat; SmParser aInterpreter; SvStorageStreamRef aDocStream; SmSymSetManager *pSymSetMgr; SmNode *pTree; SvInPlaceMenuBar *pMenuBar; SfxMenuBarManager *pMenuMgr; SfxItemPool *pEditEngineItemPool; EditEngine *pEditEngine; SfxPrinter *pPrinter; //Siehe Kommentar zum SmPrinter Access! Printer *pTmpPrinter; //ebenfalls long nLeftBorder, nRightBorder, nTopBorder, nBottomBorder; USHORT nModifyCount; BOOL bIsFormulaArranged; virtual void SFX_NOTIFY(SfxBroadcaster& rBC, const TypeId& rBCType, const SfxHint& rHint, const TypeId& rHintType); void RestartFocusTimer (); BOOL Try3x( SvStorage *pStor, StreamMode eMode); BOOL Try2x( SvStorage *pStor, StreamMode eMode); BOOL WriteAsMathType3( SfxMedium& ); virtual void Draw(OutputDevice *pDevice, const JobSetup & rSetup, USHORT nAspect = ASPECT_CONTENT); virtual void FillClass(SvGlobalName* pClassName, ULONG* pFormat, String* pAppName, String* pFullTypeName, String* pShortTypeName, long nFileFormat = SOFFICE_FILEFORMAT_CURRENT) const; virtual BOOL SetData( const String& rData ); virtual ULONG GetMiscStatus() const; virtual void OnDocumentPrinterChanged( Printer * ); virtual BOOL InitNew(SvStorage *); virtual BOOL Load(SvStorage *); virtual BOOL Insert(SvStorage *); void ImplSave( SvStorageStreamRef xStrm ); virtual BOOL Save(); virtual BOOL SaveAs( SvStorage *pNewStor ); virtual BOOL ConvertTo( SfxMedium &rMedium ); virtual BOOL SaveCompleted( SvStorage *pNewStor ); virtual void HandsOff(); Printer *GetPrt(); void Convert40To50Txt( String &rText ); void Convert50To60Txt( String &rText ); void Convert60To50Txt( String &rText ); BOOL IsFormulaArranged() const { return bIsFormulaArranged; } void SetFormulaArranged(BOOL bVal) { bIsFormulaArranged = bVal; } void ArrangeFormula(); virtual BOOL ConvertFrom(SfxMedium &rMedium); BOOL InsertFrom(SfxMedium &rMedium); BOOL ImportSM20File(SvStream *pStream, BOOL bInsert = FALSE); void UpdateText(); public: TYPEINFO(); SFX_DECL_INTERFACE(SFX_INTERFACE_SMA_START+1); SFX_DECL_OBJECTFACTORY_DLL(SmDocShell, SM_MOD()); SmDocShell(SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED); virtual ~SmDocShell(); void LoadSymbols(); void SaveSymbols(); //Zugriff fuer die View. Diese Zugriffe sind nur fuer den nicht OLE-Fall! //und fuer die Kommunikation mit dem SFX! //Alle internen Verwendungen des Printers sollten ausschlieslich uber //den SmPrinterAccess funktionieren. BOOL HasPrinter() { return 0 != pPrinter; } SfxPrinter *GetPrinter() { GetPrt(); return pPrinter; } void SetPrinter( SfxPrinter * ); const String &GetTitle() const; const String &GetComment() const; void SetText(const String& rBuffer); String& GetText() { return (aText); } void SetFormat(SmFormat& rFormat); SmFormat& GetFormat() { return (aFormat); } void Parse(); SmParser & GetParser() { return aInterpreter; } const SmNode * GetFormulaTree() const { return pTree; } void SetFormulaTree(SmNode *&rTree) { pTree = rTree; } EditEngine & GetEditEngine(); SfxItemPool & GetEditEngineItemPool(); SmSymSetManager & GetSymSetManager(); const SmSymSetManager & GetSymSetManager() const { return ((SmDocShell *) this)->GetSymSetManager(); } void Draw(OutputDevice &rDev, Point &rPosition); Size GetSize(); void Resize(); virtual SfxUndoManager *GetUndoManager (); virtual SfxItemPool& GetPool(); void Execute( SfxRequest& rReq ); void GetState(SfxItemSet &); virtual void SetVisArea (const Rectangle & rVisArea); virtual void UIActivate (BOOL bActivate); virtual void SetModified(BOOL bModified); }; #endif