Files
libreoffice/starmath/inc/document.hxx

252 lines
8.2 KiB
C++
Raw Normal View History

2000-09-18 16:07:07 +00:00
/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
2000-09-18 16:07:07 +00:00
*
* $RCSfile: document.hxx,v $
2000-09-18 16:07:07 +00:00
*
* $Revision: 1.27 $
2000-09-18 16:07:07 +00:00
*
* last change: $Author: rt $ $Date: 2005-12-14 14:59:26 $
2000-09-18 16:07:07 +00:00
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
2000-09-18 16:07:07 +00:00
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
2000-09-18 16:07:07 +00:00
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
2000-09-18 16:07:07 +00:00
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
2000-09-18 16:07:07 +00:00
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
2000-09-18 16:07:07 +00:00
*
************************************************************************/
#ifndef DOCUMENT_HXX
#define DOCUMENT_HXX
#define SMDLL 1
#ifndef _SOT_STORAGE_HXX
#include <sot/storage.hxx>
2000-09-18 16:07:07 +00:00
#endif
#ifndef _SOT_SOTREF_HXX //autogen
#include <sot/sotref.hxx>
#endif
#ifndef _SFX_OBJSH_HXX //autogen
#include <sfx2/objsh.hxx>
#endif
#ifndef _SFXLSTNER_HXX //autogen
#include <svtools/lstner.hxx>
#endif
#ifndef _SFX_OBJFAC_HXX //autogen
#include <sfx2/docfac.hxx>
#endif
#ifndef _SV_VIRDEV_HXX //autogen
#include <vcl/virdev.hxx>
#endif
#ifndef _FORMAT_HXX
#include "format.hxx"
#endif
#ifndef PARSE_HXX
#include "parse.hxx"
#endif
#ifndef SMMOD_HXX
#include "smmod.hxx"
#endif
#include <vcl/jobset.hxx>
2000-09-18 16:07:07 +00:00
class SmNode;
class SfxPrinter;
class Printer;
#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)
2001-03-19 09:24:37 +00:00
#define STAROFFICE_XML "StarOffice XML (Math)"
#define MATHML_XML "MathML XML (Math)"
2000-09-18 16:07:07 +00:00
/* 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.
*/
2000-09-18 16:07:07 +00:00
class SmDocShell;
class EditEngine;
2000-09-18 16:07:07 +00:00
class SmPrinterAccess
{
Printer* pPrinter;
OutputDevice* pRefDev;
2000-09-18 16:07:07 +00:00
public:
SmPrinterAccess( SmDocShell &rDocShell );
~SmPrinterAccess();
Printer* GetPrinter() { return pPrinter; }
OutputDevice* GetRefDev() { return pRefDev; }
2000-09-18 16:07:07 +00:00
};
////////////////////////////////////////////////////////////
void SetEditEngineDefaultFonts(
EditEngine &rEditEngine,
SfxItemPool &rEditEngineItemPool );
2000-09-18 16:07:07 +00:00
////////////////////////////////////////////////////////////
class SmDocShell : public SfxObjectShell, public SfxListener
2000-09-18 16:07:07 +00:00
{
friend class SmPrinterAccess;
friend class SmModel;
2000-09-18 16:07:07 +00:00
String aText;
SmFormat aFormat;
SmParser aInterpreter;
2002-05-31 13:23:22 +00:00
String aAccText;
2000-09-18 16:07:07 +00:00
SmNode *pTree;
SfxMenuBarManager *pMenuMgr;
SfxItemPool *pEditEngineItemPool;
EditEngine *pEditEngine;
2000-09-18 16:07:07 +00:00
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 WriteAsMathType3( SfxMedium& );
2000-09-18 16:07:07 +00:00
virtual void Draw(OutputDevice *pDevice,
const JobSetup & rSetup,
USHORT nAspect = ASPECT_CONTENT);
virtual void FillClass(SvGlobalName* pClassName,
sal_uInt32* pFormat,
2000-09-18 16:07:07 +00:00
String* pAppName,
String* pFullTypeName,
String* pShortTypeName,
sal_Int32 nFileFormat ) const;
2000-09-18 16:07:07 +00:00
2001-03-09 16:14:48 +00:00
virtual BOOL SetData( const String& rData );
2000-09-18 16:07:07 +00:00
virtual ULONG GetMiscStatus() const;
virtual void OnDocumentPrinterChanged( Printer * );
virtual sal_Bool InitNew( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage );
virtual BOOL Load( SfxMedium& rMedium );
BOOL Insert( SfxMedium& rMedium );
2000-09-18 16:07:07 +00:00
void ImplSave( SvStorageStreamRef xStrm );
virtual BOOL Save();
virtual BOOL SaveAs( SfxMedium& rMedium );
2000-09-18 16:07:07 +00:00
virtual BOOL ConvertTo( SfxMedium &rMedium );
virtual BOOL SaveCompleted( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage );
2000-09-18 16:07:07 +00:00
Printer *GetPrt();
OutputDevice* GetRefDev();
2000-09-18 16:07:07 +00:00
BOOL IsFormulaArranged() const { return bIsFormulaArranged; }
void SetFormulaArranged(BOOL bVal) { bIsFormulaArranged = bVal; }
void ArrangeFormula();
virtual BOOL ConvertFrom(SfxMedium &rMedium);
BOOL InsertFrom(SfxMedium &rMedium);
void UpdateText();
2000-09-18 16:07:07 +00:00
public:
TYPEINFO();
SFX_DECL_INTERFACE(SFX_INTERFACE_SMA_START+1);
SFX_DECL_OBJECTFACTORY();
2000-09-18 16:07:07 +00:00
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);
const SmFormat& GetFormat() { return (aFormat); }
2000-09-18 16:07:07 +00:00
void Parse();
SmParser & GetParser() { return aInterpreter; }
const SmNode * GetFormulaTree() const { return pTree; }
void SetFormulaTree(SmNode *&rTree) { pTree = rTree; }
2002-05-24 06:48:49 +00:00
String GetAccessibleText();
EditEngine & GetEditEngine();
SfxItemPool & GetEditEngineItemPool();
2000-09-18 16:07:07 +00:00
void Draw(OutputDevice &rDev, Point &rPosition);
Size GetSize();
void Repaint();
2000-09-18 16:07:07 +00:00
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);
2000-09-18 16:07:07 +00:00
};
#endif