diff options
author | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 16:15:01 +0000 |
---|---|---|
committer | Jens-Heiner Rechtien <hr@openoffice.org> | 2000-09-18 16:15:01 +0000 |
commit | 7b0b5cdfeed656b279bc32cd929630d5fc25878b (patch) | |
tree | 5b89fb8497d7329d26c43f109bb014c54ffb0e8c | |
parent | d791366863cf9659a01b171ce0e727bfe2f28cdf (diff) |
initial import
952 files changed, 522032 insertions, 0 deletions
diff --git a/sw/inc/acmplwrd.hxx b/sw/inc/acmplwrd.hxx new file mode 100644 index 000000000000..046c44affe91 --- /dev/null +++ b/sw/inc/acmplwrd.hxx @@ -0,0 +1,105 @@ +/************************************************************************* + * + * $RCSfile: acmplwrd.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _ACMPLWRD_HXX +#define _ACMPLWRD_HXX + + +#define _SVSTDARR_STRINGSISORTDTOR +#include <svtools/svstdarr.hxx> + + +class SwAutoCompleteWord +{ + SvStringsISortDtor aWordLst; + SvPtrarr aLRULst; + USHORT nMaxCount, nMinWrdLen; + BOOL bLockWordLst; +public: + SwAutoCompleteWord( USHORT nWords = 500, USHORT nMWrdLen = 10 ); + ~SwAutoCompleteWord(); + + BOOL InsertWord( const String& rWord ); + BOOL RemoveWord( const String& rWord ); + BOOL SearchWord( const String& rWord, USHORT* pFndPos = 0 ) const; + + BOOL GetRange( const String& rWord, USHORT& rStt, USHORT& rEnd ) const; + + BOOL SetToTop( const String& rWord ); + + USHORT Count() const { return aWordLst.Count(); } + + const String& operator[]( USHORT n ) const { return *aWordLst[ n ]; } + + BOOL IsLockWordLstLocked() const { return bLockWordLst; } + void SetLockWordLstLocked( BOOL bFlag ) { bLockWordLst = bFlag; } + + USHORT GetMaxCount() const { return nMaxCount; } + void SetMaxCount( USHORT n ); + + USHORT GetMinWordLen() const { return nMinWrdLen; } + void SetMinWordLen( USHORT n ); + + const SvStringsISortDtor& GetWordList() const { return aWordLst; } + void CheckChangedList( const SvStringsISortDtor& rNewLst ); +}; + + +#endif diff --git a/sw/inc/authfld.hxx b/sw/inc/authfld.hxx new file mode 100644 index 000000000000..d0d69c949d28 --- /dev/null +++ b/sw/inc/authfld.hxx @@ -0,0 +1,222 @@ +/************************************************************************* + * + * $RCSfile: authfld.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _AUTHFLD_HXX +#define _AUTHFLD_HXX + +#ifndef _FLDBAS_HXX +#include <fldbas.hxx> +#endif +#ifndef _TOXE_HXX +#include <toxe.hxx> +#endif + +class SwAuthDataArr; +/* -----------------21.09.99 13:32------------------- + + --------------------------------------------------*/ +class SwAuthEntry +{ + String aAuthFields[AUTH_FIELD_END]; + USHORT nRefCount; +public: + SwAuthEntry() : nRefCount(0){} + SwAuthEntry( const SwAuthEntry& rCopy ); + BOOL operator==(const SwAuthEntry& rComp); + + BOOL GetFirstAuthorField(USHORT& nPos, String& rToFill)const; + BOOL GetNextAuthorField(USHORT& nPos, String& rToFill)const; + inline const String& GetAuthorField(ToxAuthorityField ePos)const; + inline void SetAuthorField(ToxAuthorityField ePos, + const String& rField); + + void AddRef() { ++nRefCount; } + void RemoveRef() { --nRefCount; } + USHORT GetRefCount() { return nRefCount; } +}; +/* -----------------20.10.99 16:49------------------- + + --------------------------------------------------*/ +struct SwTOXSortKey +{ + ToxAuthorityField eField; + BOOL bSortAscending; + SwTOXSortKey() : + eField(AUTH_FIELD_END), + bSortAscending(TRUE){} +}; + +/* -----------------14.09.99 16:15------------------- + + --------------------------------------------------*/ +class SvUShorts; +class SwAuthorityField; +class SvLongs; +class SortKeyArr; +class SwAuthorityFieldType : public SwFieldType +{ + SwDoc* m_pDoc; + SwAuthDataArr* m_pDataArr; + SvLongs* m_pSequArr; + SortKeyArr* m_pSortKeyArr; + char m_cPrefix; + char m_cSuffix; + BOOL m_bIsSequence :1; + BOOL m_bSortByDocument :1; + + const SwAuthorityFieldType& operator=( const SwAuthorityFieldType& ); + +public: + SwAuthorityFieldType(SwDoc* pDoc); + SwAuthorityFieldType( const SwAuthorityFieldType& ); + ~SwAuthorityFieldType(); + + virtual SwFieldType* Copy() const; + virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ); + + inline SwDoc* GetDoc() const { return m_pDoc; } + inline void SetDoc(SwDoc* pNewDoc) { m_pDoc = pNewDoc; } + + void RemoveField(long nHandle); + long AddField(const String& rFieldContents); + BOOL AddField(long nHandle); + + const SwAuthEntry* GetEntryByHandle(long nHandle) const; + + void GetAllEntryIdentifiers( SvStringsDtor& rToFill )const; + const SwAuthEntry* GetEntryByIdentifier(const String& rIdentifier)const; + + void ChangeEntryContent(const SwAuthEntry* pNewEntry); + // import interface + USHORT AppendField(const SwAuthEntry& rInsert); + void MergeFieldType(const SwAuthorityFieldType& rNew, SvUShorts& rMap); + void RemoveUnusedFields(); + long GetHandle(USHORT nPos); + USHORT GetPosition(long nHandle); + + USHORT GetEntryCount() const; + const SwAuthEntry* GetEntryByPosition(USHORT nPos) const; + + USHORT GetSequencePos(long nHandle); + + BOOL IsSequence() const {return m_bIsSequence;} + void SetSequence(BOOL bSet) {m_bIsSequence = bSet;} + + void SetPreSuffix(char cPre, char cSuf) + { + m_cPrefix = cPre; + m_cSuffix = cSuf; + } + char GetPrefix() const { return m_cPrefix;} + char GetSuffix() const { return m_cSuffix;} + + BOOL IsSortByDocument() const {return m_bSortByDocument;} + void SetSortByDocument(BOOL bSet) {m_bSortByDocument = bSet;} + + USHORT GetSortKeyCount() const ; + const SwTOXSortKey* GetSortKey(USHORT nIdx) const ; + void SetSortKeys(USHORT nKeyCount, SwTOXSortKey nKeys[]); + + //initui.cxx + static const String& GetAuthFieldName(ToxAuthorityField eType); + static const String& GetAuthTypeName(ToxAuthorityType eType); + +}; +/* -----------------14.09.99 16:15------------------- + + --------------------------------------------------*/ +class SwAuthorityField : public SwField +{ + long nHandle; + +public: + SwAuthorityField(SwAuthorityFieldType* pType, const String& rFieldContents); + SwAuthorityField(SwAuthorityFieldType* pType, long nHandle); + ~SwAuthorityField(); + + const String& GetFieldText(ToxAuthorityField eField) const; + + virtual String Expand() const; + virtual SwField* Copy() const; + virtual void SetPar1(const String& rStr); + virtual SwFieldType* ChgTyp( SwFieldType* ); + + long GetHandle() const { return nHandle; } + + //import interface + USHORT GetHandlePosition() const; +}; + +// --- inlines ----------------------------------------------------------- +inline const String& SwAuthEntry::GetAuthorField(ToxAuthorityField ePos)const +{ + if(AUTH_FIELD_END > ePos) + return aAuthFields[ePos]; + else + return aEmptyStr; +} +inline void SwAuthEntry::SetAuthorField(ToxAuthorityField ePos, const String& rField) +{ + if(AUTH_FIELD_END > ePos) + aAuthFields[ePos] = rField; +} + +#endif + diff --git a/sw/inc/authratr.hxx b/sw/inc/authratr.hxx new file mode 100644 index 000000000000..c69d1fd3b4c3 --- /dev/null +++ b/sw/inc/authratr.hxx @@ -0,0 +1,92 @@ +/************************************************************************* + * + * $RCSfile: authratr.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _AUTHRATR_HXX +#define _AUTHRATR_HXX + +#ifndef _SOLAR_H +#include <tools/solar.h> +#endif + +#ifndef _SV_COLOR_HXX //autogen +#include <vcl/color.hxx> +#endif + +#define COL_NONE TRGB_COLORDATA( 0x80, 0xFF, 0xFF, 0xFF ) + +class AuthorCharAttr +{ +public: + USHORT nItemId; + USHORT nAttr; + ULONG nColor; + + AuthorCharAttr(); + + inline BOOL operator == ( const AuthorCharAttr& rAttr ) const + { + return nItemId == rAttr.nItemId && nAttr == rAttr.nAttr && + nColor == rAttr.nColor; + } +}; + + +#endif diff --git a/sw/inc/bookmrk.hxx b/sw/inc/bookmrk.hxx new file mode 100644 index 000000000000..ade83966be93 --- /dev/null +++ b/sw/inc/bookmrk.hxx @@ -0,0 +1,177 @@ +/************************************************************************* + * + * $RCSfile: bookmrk.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _BOOKMRK_HXX +#define _BOOKMRK_HXX + +#include "hintids.hxx" //die Ids der Attribute, vor macitem damit die + //die Attribut richtig angezogen werden. +#ifndef _SFXMACITEM_HXX +#include <svtools/macitem.hxx> +#endif + +#ifndef _KEYCOD_HXX //autogen +#include <vcl/keycod.hxx> +#endif +#ifndef _SO2REF_HXX //autogen +#include <so3/so2ref.hxx> +#endif +#ifndef _BKMRKE_HXX //autogen +#include <bkmrke.hxx> +#endif + +#include "calbck.hxx" + +#ifndef SW_DECL_SWSERVEROBJECT_DEFINED +#define SW_DECL_SWSERVEROBJECT_DEFINED +class SvPseudoObject; +SO2_DECL_REF( SwServerObject ) +#endif + + +struct SwPosition; // fwd Decl. wg. UI + +class SwBookmark : public SwModify +{ + friend class SwDoc; // fuers Loeschen + friend class Sw3IoImp; // fuers Setzen der Position(en) + + SwPosition *pPos1, *pPos2; // wird im CTOR gesetzt, im DTOR geloescht + SwServerObjectRef refObj; // falls DataServer -> Pointer gesetzt + +protected: + SvxMacro aStartMacro; + SvxMacro aEndMacro; + String aName; + String aShortName; + KeyCode aCode; + BOOKMARK_TYPE eMarkType; + +public: + TYPEINFO(); + + SwBookmark(const SwPosition& aPos); + SwBookmark(const SwPosition& aPos, + const KeyCode& rCode, + const String& rName, const String& rShortName); + // Beim Loeschen von Text werden Bookmarks mitgeloescht! + ~SwBookmark(); + + const SwPosition& GetPos() const { return *pPos1; } + const SwPosition* GetOtherPos() const { return pPos2; } + + // nicht undofaehig + void SetName(const String& rNewName) { aName = rNewName; } + const String& GetName() const { return aName; } + // nicht undofaehig + void SetShortName(const String& rNewSName) { aShortName = rNewSName; } + const String& GetShortName() const { return aShortName; } + // nicht undofaehig + void SetKeyCode(const KeyCode& rNewCode) { aCode = rNewCode; } + const KeyCode& GetKeyCode() const { return aCode; } + + // Vergleiche auf Basis der Dokumentposition + BOOL operator < (const SwBookmark &) const; + BOOL operator ==(const SwBookmark &) const; + // falls man wirklich auf gleiche Position abfragen will. + BOOL IsEqualPos( const SwBookmark &rBM ) const; + + BOOL IsBookMark() const { return BOOKMARK == eMarkType; } + BOOL IsMark() const { return MARK == eMarkType; } + BOOL IsDDEMark() const { return DDE_BOOKMARK == eMarkType; } + BOOL IsUNOMark() const { return UNO_BOOKMARK == eMarkType; } + void SetType( BOOKMARK_TYPE eNewType ) { eMarkType = eNewType; } + + void SetStartMacro(const SvxMacro& rSt) { aStartMacro = rSt; } + const SvxMacro& GetStartMacro() { return aStartMacro; } + void SetEndMacro(const SvxMacro& rSt) { aEndMacro = rSt; } + const SvxMacro& GetEndMacro() { return aEndMacro; } + + // Daten Server-Methoden + void SetRefObject( SvPseudoObject* pObj ); + const SwServerObject* GetObject() const { return &refObj; } + SwServerObject* GetObject() { return &refObj; } + BOOL IsServer() const { return refObj.Is(); } + +private: + // fuer METWARE: + // es wird (vorerst) nicht kopiert und nicht zugewiesen + SwBookmark(const SwBookmark &); + SwBookmark &operator=(const SwBookmark &); +}; + +class SwMark: public SwBookmark +{ +public: + SwMark(const SwPosition& aPos, + const KeyCode& rCode, + const String& rName, const String& rShortName); +}; + +class SwUNOMark: public SwBookmark +{ +public: + SwUNOMark(const SwPosition& aPos, + const KeyCode& rCode, + const String& rName, const String& rShortName); +}; + + +#endif diff --git a/sw/inc/bparr.hxx b/sw/inc/bparr.hxx new file mode 100644 index 000000000000..365fb2d66363 --- /dev/null +++ b/sw/inc/bparr.hxx @@ -0,0 +1,164 @@ +/************************************************************************* + * + * $RCSfile: bparr.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _BPARR_HXX +#define _BPARR_HXX + +#ifndef _SOLAR_H +#include <tools/solar.h> +#endif +#ifndef _DEBUG_HXX //autogen +#include <tools/debug.hxx> +#endif + +struct BlockInfo; +class BigPtrArray; + +class BigPtrEntry +{ + friend class BigPtrArray; + BlockInfo* pBlock; + USHORT nOffset; +protected: + BigPtrEntry() : pBlock(0), nOffset(0) {} + virtual ~BigPtrEntry() {} + + inline ULONG GetPos() const; + inline BigPtrArray& GetArray() const; +}; +typedef BigPtrEntry* ElementPtr; + + +typedef BOOL (*FnForEach)( const ElementPtr&, void* pArgs ); + +// 1000 Eintr„ge pro Block = etwas weniger als 4K +#define MAXENTRY 1000 + + +// Anzahl Eintraege, die bei der Kompression frei bleiben duerfen +// dieser Wert ist fuer den Worst Case, da wir MAXBLOCK mit ca 25% +// Overhead definiert haben, reichen 80% = 800 Eintraege vollkommen aus +// Will mann voellige Kompression haben, muss eben 100 angegeben werden. + +#define COMPRESSLVL 80 + +struct BlockInfo { // Block-Info: + BigPtrArray* pBigArr; // in diesem Array steht der Block + ElementPtr* pData; // Datenblock + ULONG nStart, nEnd; // Start- und EndIndex + USHORT nElem; // Anzahl Elemente +}; + +class BigPtrArray +{ + BlockInfo** ppInf; // Block-Infos + ULONG nSize; // Anzahl Elemente + USHORT nMaxBlock; // akt. max Anzahl Bloecke + USHORT nBlock; // Anzahl Bloecke + USHORT nCur; // letzter Block + + USHORT Index2Block( ULONG ) const; // Blocksuche + BlockInfo* InsBlock( USHORT ); // Block einfuegen + void BlockDel( USHORT ); // es wurden Bloecke geloescht + void UpdIndex( USHORT ); // Indexe neu berechnen + +protected: + // fuelle alle Bloecke auf. + // Der short gibt in Prozent an, wie voll die Bloecke werden sollen. + // Der ReturnWert besagt, das irgendetwas "getan" wurde + USHORT Compress( short = COMPRESSLVL ); + +public: + BigPtrArray(); + ~BigPtrArray(); + + ULONG Count() const { return nSize; } + + void Insert( const ElementPtr& r, ULONG pos ); +// void Insert( const ElementPtr* p, ULONG n, ULONG pos ); + void Remove( ULONG pos, ULONG n = 1 ); + void Move( ULONG from, ULONG to ); + void Replace( ULONG pos, const ElementPtr& r); + + ElementPtr operator[]( ULONG ) const; + ULONG GetIndex( const ElementPtr, ULONG, ULONG ) const; + void ForEach( FnForEach fn, void* pArgs = NULL ) + { + ForEach( 0, nSize, fn, pArgs ); + } + void ForEach( ULONG nStart, ULONG nEnd, FnForEach fn, void* pArgs = NULL ); +}; + + + +inline ULONG BigPtrEntry::GetPos() const +{ + DBG_ASSERT( this == pBlock->pData[ nOffset ], "Element nicht im Block" ); + return pBlock->nStart + nOffset; +} + +inline BigPtrArray& BigPtrEntry::GetArray() const +{ + return *pBlock->pBigArr; +} + + +#endif diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx new file mode 100644 index 000000000000..e84370e4fc24 --- /dev/null +++ b/sw/inc/calbck.hxx @@ -0,0 +1,260 @@ +/************************************************************************* + * + * $RCSfile: calbck.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ + +/************************************************************* +#* Service-Klassen + *************************************************************/ + +/* +#* Aendert sich ein Attribut in einem Format, so muss diese +#* Aenderung an alle abhaengigen Formate und ueber sie an +#* alle betroffenen Nodes propagiert werden. Dabei muss +#* festgestellt werden, ob die Aenderung einen Effekt haben +#* kann, oder ob das geaenderte Attribut von dem abhaengigen +#* Format ueberdefiniert wird (so dass ohnehin der +#* Attributwert des abhaengigen Formates den geaenderten +#* Wert verdeckt). Weiterhin kann der betroffene Node +#* feststellen, ob er von dem geaenderten Attribut Gebrauch +#* macht (Beispiel: Linienabstand fuer Unterstreichung wurde +#* geaendert, das Attribut Unterstreichung wurde aber nicht +#* verwendet). So wird bei Aenderungen der minimale Aufwand +#* zum Reformatieren erkannt. + */ +#ifndef _CALBCK_HXX +#define _CALBCK_HXX + +#ifndef _SOLAR_H +#include <tools/solar.h> +#endif + +#ifndef _RTTI_HXX +#include <tools/rtti.hxx> +#endif + +class SwModify; +class SwClientIter; +class SfxPoolItem; +class SvStream; + +// ---------- +// SwClient +// ---------- + +class SwClient +{ + friend class SwModify; + friend class SwClientIter; + + SwClient *pLeft, *pRight; // fuer die AVL-Sortierung + BOOL bModifyLocked : 1; // wird in SwModify::Modify benutzt, + // eigentlich ein Member des SwModify + // aber aus Platzgruenden hier. + BOOL bInModify : 1; // ist in einem Modify. (Debug!!!) + BOOL bInDocDTOR : 1; // Doc wird zerstoert, nicht "abmelden" + BOOL bInCache : 1; // Ist im BorderAttrCache des Layout, + // Traegt sich dann im Modify aus! + BOOL bInSwFntCache : 1; // Ist im SwFont-Cache der Formatierung + +protected: + SwModify *pRegisteredIn; + SwClient(SwModify *pToRegisterIn); + +public: + inline SwClient(); + virtual ~SwClient(); + virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew); + const SwModify* GetRegisteredIn() const { return pRegisteredIn; } + + //rtti, abgeleitete moegens gleichtun oder nicht. Wenn sie es gleichtun + //kann ueber die Abhaengigkeitsliste eines Modify typsicher gecastet + //werden. + TYPEINFO(); + + void LockModify() { bModifyLocked = TRUE; } + void UnlockModify() { bModifyLocked = FALSE; } + void SetInCache( BOOL bNew ) { bInCache = bNew; } + void SetInSwFntCache( BOOL bNew ) { bInSwFntCache = bNew; } + int IsModifyLocked() const { return bModifyLocked; } + int IsInDocDTOR() const { return bInDocDTOR; } + int IsInCache() const { return bInCache; } + int IsInSwFntCache() const { return bInSwFntCache; } + + // erfrage vom Client Informationen + virtual BOOL GetInfo( SfxPoolItem& ) const; + +private: + SwClient( const SwClient& ); + SwClient &operator=( const SwClient& ); +}; + +inline SwClient::SwClient() : + pLeft(0), pRight(0), pRegisteredIn(0) +{ bModifyLocked = bInModify = bInDocDTOR = bInCache = bInSwFntCache = FALSE; } + + +// ---------- +// SwModify +// ---------- + +// Klasse hat eine doppelt Verkette Liste fuer die Abhaengigen. + +class SwModify: public SwClient +{ + friend SvStream& operator<<( SvStream& aS, SwModify & ); + + friend class SwClientIter; + SwClient* pRoot; + + SwClient *_Remove(SwClient *pDepend); + +public: + SwModify(SwModify *pToRegisterIn ); + virtual ~SwModify(); + virtual void Modify( SfxPoolItem *pOldValue, SfxPoolItem *pNewValue ); + void Add(SwClient *pDepend); + SwClient *Remove(SwClient *pDepend) + { return bInDocDTOR ? 0 : _Remove( pDepend ); } + + const SwClient* GetDepends() const { return pRoot; } + + // erfrage vom Client Informationen + virtual BOOL GetInfo( SfxPoolItem& ) const; + + void SetInDocDTOR() { bInDocDTOR = TRUE; } + + void CheckCaching( const USHORT nWhich ); + + BOOL IsLastDepend() const + { return pRoot && !pRoot->pLeft && !pRoot->pRight; } +}; + +// ---------- +// SwDepend +// ---------- + +/* + * Sehr sinnvolle Klasse, wenn ein Objekt von mehreren Objekten + * abhaengig ist. Diese sollte fuer jede Abhaengigkeit ein Objekt + * der Klasse SwDepend als Member haben. + */ +class SwDepend: public SwClient +{ +private: + SwClient *pToTell; +public: + SwClient* GetToTell() { return pToTell; } + virtual void Modify( SfxPoolItem *pOldValue, SfxPoolItem *pNewValue ); + SwDepend(SwClient *pTellHim, SwModify *pDepend); + + // erfrage vom Client Informationen + virtual BOOL GetInfo( SfxPoolItem & ) const; +}; + + +class SwClientIter +{ + friend SwClient* SwModify::_Remove(SwClient *); // fuer Ptr-Korrektur + friend void SwModify::Add(SwClient *); // nur fuer ASSERT ! + + SwModify& rRoot; + SwClient *pAkt, *pDelNext; + // fuers Updaten der aller Iteratoren beim Einfuegen/Loeschen von + // Clients, wenn der Iterator gerade draufsteht. + SwClientIter *pNxtIter; + TypeId aSrchId; // fuer First/Next - suche diesen Type + +public: + SwClientIter( SwModify& ); + ~SwClientIter(); + + const SwModify& GetModify() const { return rRoot; } + SwModify& GetModify() { return rRoot; } + +#ifndef CFRONT + SwClient* operator++(int); // zum Naechsten + SwClient* operator--(int); // zum Vorherigen +#endif + SwClient* operator++(); // zum Naechsten + SwClient* operator--(); // zum Vorherigen + + SwClient* GoStart(); // zum Anfang + SwClient* GoEnd(); // zum Ende + + inline SwClient* GoRoot(); // wieder ab Root (==Start) anfangen + + SwClient* operator()() const + { return pDelNext == pAkt ? pAkt : pDelNext; } + + int IsChanged() const { return pDelNext != pAkt; } + + SwClient* First( TypeId nType ); + SwClient* Next(); +}; + +inline SwClient* SwClientIter::GoRoot() // wieder ab Root anfangen +{ + pAkt = rRoot.pRoot; + return (pDelNext = pAkt); +} + + + +#endif diff --git a/sw/inc/calc.hxx b/sw/inc/calc.hxx new file mode 100644 index 000000000000..b839ffe26463 --- /dev/null +++ b/sw/inc/calc.hxx @@ -0,0 +1,261 @@ +/************************************************************************* + * + * $RCSfile: calc.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _CALC_HXX +#define _CALC_HXX + + +#ifndef _SVARRAY_HXX //autogen +#include <svtools/svarray.hxx> +#endif + +#ifndef __SBX_SBXVALUE //autogen +#include <svtools/sbxvar.hxx> +#endif + +class CharClass; +class International; +class SwFieldType; +class SwDoc; + +#define TBLSZ 47 // sollte Primzahl sein, wegen HashTable + +const sal_Unicode cListDelim = '|'; + +/****************************************************************************** + * Calculate Operations + ******************************************************************************/ +enum SwCalcOper +{ + CALC_NAME, CALC_NUMBER, CALC_ENDCALC, + CALC_PLUS='+', CALC_MINUS='-', CALC_MUL='*', + CALC_DIV='/', CALC_PRINT=';', CALC_ASSIGN='=', + CALC_LP='(', CALC_RP=')', CALC_PHD='%', + CALC_POW='^', + CALC_LISTOP = cListDelim, + CALC_NOT=256, CALC_AND=257, CALC_OR=258, + CALC_XOR=259, CALC_EQ=260, CALC_NEQ=261, + CALC_LEQ=262, CALC_GEQ=263, CALC_LES=264, + CALC_GRE=265, CALC_SUM=266, CALC_MEAN=267, + CALC_SQRT=268, CALC_MIN=269, CALC_MIN_IN=270, + CALC_MAX=271, CALC_MAX_IN=272, CALC_SIN=273, + CALC_COS=274, CALC_TAN=275, CALC_ASIN=276, + CALC_ACOS=278, CALC_ATAN=279, CALC_TDIF=280, + CALC_ROUND=281 +}; + +//-- Calculate Operations Strings ----------------------------------------- + +extern const sal_Char __FAR_DATA sCalc_Add[]; +extern const sal_Char __FAR_DATA sCalc_Sub[]; +extern const sal_Char __FAR_DATA sCalc_Mul[]; +extern const sal_Char __FAR_DATA sCalc_Div[]; +extern const sal_Char __FAR_DATA sCalc_Phd[]; +extern const sal_Char __FAR_DATA sCalc_Sqrt[]; +extern const sal_Char __FAR_DATA sCalc_Pow[]; +extern const sal_Char __FAR_DATA sCalc_Or[]; +extern const sal_Char __FAR_DATA sCalc_Xor[]; +extern const sal_Char __FAR_DATA sCalc_And[]; +extern const sal_Char __FAR_DATA sCalc_Not[]; +extern const sal_Char __FAR_DATA sCalc_Eq[]; +extern const sal_Char __FAR_DATA sCalc_Neq[]; +extern const sal_Char __FAR_DATA sCalc_Leq[]; +extern const sal_Char __FAR_DATA sCalc_Geq[]; +extern const sal_Char __FAR_DATA sCalc_L[]; +extern const sal_Char __FAR_DATA sCalc_G[]; +extern const sal_Char __FAR_DATA sCalc_Sum[]; +extern const sal_Char __FAR_DATA sCalc_Mean[]; +extern const sal_Char __FAR_DATA sCalc_Min[]; +extern const sal_Char __FAR_DATA sCalc_Max[]; +extern const sal_Char __FAR_DATA sCalc_Sin[]; +extern const sal_Char __FAR_DATA sCalc_Cos[]; +extern const sal_Char __FAR_DATA sCalc_Tan[]; +extern const sal_Char __FAR_DATA sCalc_Asin[]; +extern const sal_Char __FAR_DATA sCalc_Acos[]; +extern const sal_Char __FAR_DATA sCalc_Atan[]; +extern const sal_Char __FAR_DATA sCalc_Tdif[]; +extern const sal_Char __FAR_DATA sCalc_Round[]; + +/****************************************************************************** + * Calculate ErrorCodes + ******************************************************************************/ +enum SwCalcError +{ + CALC_NOERR=0, + CALC_SYNTAX, // Syntax Fehler + CALC_ZERODIV, // Division durch Null + CALC_BRACK, // Fehlerhafte Klammerung + CALC_POWERR, // Ueberlauf in Quadratfunktion + CALC_VARNFND, // Variable wurde nicht gefunden + CALC_OVERFLOW, // Ueberlauf + CALC_WRONGTIME // falsches Zeitformat +}; + +class SwSbxValue : public SbxValue +{ +public: + //JP 03.02.99: immer auf eine Zahl defaulten, damit auch gerechnet wird. + // Ansonsten wird daraus ein SbxEMPTY und damit ist nichts + // anzufangen. + SwSbxValue( long n = 0 ) { PutLong( n ); } + SwSbxValue( const double& rD ) { PutDouble( rD ); } + SwSbxValue( const SwSbxValue& rVal ) : SbxValue( rVal ) {} + virtual ~SwSbxValue(); + + // Strings sonderbehandeln + BOOL GetBool() const; + // Strings sonderbehandeln + double GetDouble() const; + SwSbxValue& MakeDouble(); +}; + +/****************************************************************************** + * Calculate HashTables fuer VarTable und Operations + ******************************************************************************/ +struct SwHash +{ + SwHash( const String& rStr ); + virtual ~SwHash(); + String aStr; + SwHash *pNext; +}; + +struct SwCalcExp : public SwHash +{ + SwSbxValue nValue; + const SwFieldType* pFldType; + + SwCalcExp( const String& rStr, const SwSbxValue& rVal, + const SwFieldType* pFldType = 0 ); +}; + +SwHash* Find( const String& rSrch, SwHash** ppTable, + USHORT nTblSize, USHORT* pPos = 0 ); + +void DeleteHashTable( SwHash** ppTable, USHORT nTblSize ); + +// falls _CalcOp != 0, dann ist das ein gueltiger Operator +struct _CalcOp; +_CalcOp* FindOperator( const String& rSearch ); + +/****************************************************************************** + * class SwCalc + ******************************************************************************/ +class SwCalc +{ + SwHash* VarTable[ TBLSZ ]; + String aVarName, sCurrSym; + String sCommand; + SvPtrarr aRekurStk; + SwSbxValue nLastLeft; + SwSbxValue nNumberValue; + SwCalcExp aErrExpr; + xub_StrLen nCommandPos; + + SwDoc& rDoc; + International* pInter; + CharClass* pCharClass; + + USHORT nListPor; + SwCalcOper eCurrOper; + SwCalcOper eCurrListOper; + SwCalcError eError; + + + SwCalcOper GetToken(); + SwSbxValue Expr(); + SwSbxValue Term(); + SwSbxValue Prim(); + + BOOL ParseTime( USHORT*, USHORT*, USHORT* ); + + String GetColumnName( const String& rName ); + String GetDBName( const String& rName ); + + // dont call this methods + SwCalc( const SwCalc& ); + SwCalc& operator=( const SwCalc& ); + +public: + SwCalc( SwDoc& rD ); + ~SwCalc(); + + SwSbxValue Calculate( const String &rStr ); + String GetStrResult( const SwSbxValue& rValue, BOOL bRound = TRUE ); + String GetStrResult( double, BOOL bRound = TRUE ); + + SwCalcExp* VarInsert( const String& r ); + SwCalcExp* VarLook( const String &rStr, USHORT ins = 0 ); + void VarChange( const String& rStr, const SwSbxValue& rValue ); + void VarChange( const String& rStr, double ); + SwHash** GetVarTable() { return VarTable; } + + BOOL Push( const VoidPtr pPtr ); + void Pop( const VoidPtr pPtr ); + + void SetCalcError( SwCalcError eErr ) { eError = eErr; } + BOOL IsCalcError() const { return eError; } + + static FASTBOOL Str2Double( const String& rStr, xub_StrLen& rPos, + double& rVal, + const International* pInter = 0 ); +}; + +#endif diff --git a/sw/inc/cellatr.hxx b/sw/inc/cellatr.hxx new file mode 100644 index 000000000000..e2fa5a71b4b2 --- /dev/null +++ b/sw/inc/cellatr.hxx @@ -0,0 +1,178 @@ +/************************************************************************* + * + * $RCSfile: cellatr.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _CELLATR_HXX +#define _CELLATR_HXX + +#ifndef _SFXINTITEM_HXX //autogen +#include <svtools/intitem.hxx> +#endif +#ifndef _ZFORLIST_HXX //autogen +#include <svtools/zforlist.hxx> +#endif + +#include "format.hxx" +#include "cellfml.hxx" + + +class SwTblBoxNumFormat : public SfxUInt32Item +{ + BOOL bAuto; // automatisch vergebenes Flag +public: + SwTblBoxNumFormat( UINT32 nFormat = NUMBERFORMAT_TEXT, + BOOL bAuto = FALSE ); + + // "pure virtual Methoden" vom SfxPoolItem + virtual int operator==( const SfxPoolItem& ) const; + virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const; + virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const; + virtual SvStream& Store(SvStream &, USHORT nIVer) const; + virtual USHORT GetVersion( USHORT nFileVersion) const; + + inline SwTblBoxNumFormat& operator=( const SwTblBoxNumFormat& rAttr ) + { + SetValue( rAttr.GetValue() ); + SetAutoFlag( rAttr.GetAutoFlag() ); + return *this; + } + + BOOL GetAutoFlag() const { return bAuto; } + void SetAutoFlag( BOOL bFlag = TRUE ) { bAuto = bFlag; } +}; + +class SwTblBoxFormula : public SfxPoolItem, public SwTableFormula +{ + SwModify* pDefinedIn; // Modify-Object, in dem die Formel steht + // kann nur TablenBoxFormat sein + +public: + SwTblBoxFormula( const String& rFormula ); + + // "pure virtual Methoden" vom SfxPoolItem + virtual int operator==( const SfxPoolItem& ) const; + virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const; + virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const; + virtual SvStream& Store(SvStream &, USHORT nIVer) const; + virtual USHORT GetVersion( USHORT nFileVersion) const; + + // erfrage und setze den Modify-Pointer + inline const SwModify* GetDefinedIn() const { return pDefinedIn; } + inline void ChgDefinedIn( const SwModify* pNew ) + { pDefinedIn = (SwModify*)pNew; } + // suche den Node, in dem die Formel steht: + // BoxAttribut -> BoxStartNode + virtual const SwNode* GetNodeOfFormula() const; + + SwTableBox* GetTableBox(); + const SwTableBox* GetTableBox() const + { return ((SwTblBoxFormula*)this)->GetTableBox(); } + + // Status aendern + void ChangeState( const SfxPoolItem* pItem ); + // berechne die Formel + void Calc( SwTblCalcPara& rCalcPara, double& rValue ); +}; + +class SwTblBoxValue : public SfxPoolItem +{ + double nValue; +public: + SwTblBoxValue(); + SwTblBoxValue( const double aVal ); + + // "pure virtual Methoden" vom SfxPoolItem + virtual int operator==( const SfxPoolItem& ) const; + virtual SfxPoolItem* Clone( SfxItemPool* pPool = 0 ) const; + virtual SfxPoolItem* Create(SvStream &, USHORT nVer) const; + virtual SvStream& Store(SvStream &, USHORT nIVer) const; + virtual USHORT GetVersion( USHORT nFileVersion) const; + + inline SwTblBoxValue& operator=( const SwTblBoxValue& rCmp ) + { + nValue = rCmp.nValue; + return *this; + } + + double GetValue() const { return nValue; } + void SetValue( const double nVal ) { nValue = nVal; } +}; + + + +//*************************************************************************** + +inline const SwTblBoxNumFormat &SwAttrSet::GetTblBoxNumFmt(BOOL bInP) const + { return (const SwTblBoxNumFormat&)Get( RES_BOXATR_FORMAT,bInP); } +inline const SwTblBoxFormula &SwAttrSet::GetTblBoxFormula(BOOL bInP) const + { return (const SwTblBoxFormula&)Get( RES_BOXATR_FORMULA,bInP); } +inline const SwTblBoxValue &SwAttrSet::GetTblBoxValue(BOOL bInP) const + { return (const SwTblBoxValue&)Get( RES_BOXATR_VALUE, bInP); } + +//*************************************************************************** + +inline const SwTblBoxNumFormat &SwFmt::GetTblBoxNumFmt(BOOL bInP) const + { return aSet.GetTblBoxNumFmt(bInP); } +inline const SwTblBoxFormula &SwFmt::GetTblBoxFormula(BOOL bInP) const + { return aSet.GetTblBoxFormula(bInP); } +inline const SwTblBoxValue &SwFmt::GetTblBoxValue(BOOL bInP) const + { return aSet.GetTblBoxValue(bInP); } + +#endif diff --git a/sw/inc/cellfml.hxx b/sw/inc/cellfml.hxx new file mode 100644 index 000000000000..89d7ba9a2910 --- /dev/null +++ b/sw/inc/cellfml.hxx @@ -0,0 +1,197 @@ +/************************************************************************* + * + * $RCSfile: cellfml.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _CELLFML_HXX +#define _CELLFML_HXX + +#ifndef _STRING_HXX //autogen +#include <tools/string.hxx> +#endif + +class SwTable; +class SwNode; +class SwTableSortBoxes; +class SwSelBoxes; +class SwCalc; +class SwTableBox; +class SwTableFmlUpdate; + +class SwTblCalcPara +{ + const SwTableBox* pLastTblBox; + USHORT nStackCnt, nMaxSize; + +public: + SwTableSortBoxes *pBoxStk; // Stack fuers erkennen von Rekursionen ! + SwCalc& rCalc; // akt. Calculator + const SwTable* pTbl; // akt. Tabelle + + SwTblCalcPara( SwCalc& rCalculator, const SwTable& rTable ); + ~SwTblCalcPara(); + + BOOL CalcWithStackOverflow(); + BOOL IsStackOverFlow() const { return nMaxSize == nStackCnt; } + BOOL IncStackCnt() { return nMaxSize == ++nStackCnt; } + void DecStackCnt() { if( nStackCnt ) --nStackCnt; } + void SetLastTblBox( const SwTableBox* pBox ) { pLastTblBox = pBox; } +}; + + + +class SwTableFormula +{ +typedef void (SwTableFormula:: *FnScanFormel)( const SwTable&, String&, + String&, String*, void* ) const; + + void BoxNmsToPtr( const SwTable&, String&, String&, String* = 0, + void* pPara = 0 ) const; + void PtrToBoxNms( const SwTable&, String&, String&, String* = 0, + void* pPara = 0 ) const; + void RelNmsToBoxNms( const SwTable&, String&, String&, String* = 0, + void* pPara = 0 ) const; + void RelBoxNmsToPtr( const SwTable&, String&, String&, String* = 0, + void* pPara = 0 ) const; + void BoxNmsToRelNm( const SwTable&, String&, String&, String* = 0, + void* pPara = 0 ) const; + void _MakeFormel( const SwTable&, String&, String&, String* = 0, + void* pPara = 0 ) const; + void _GetFmlBoxes( const SwTable&, String&, String&, String* = 0, + void* pPara = 0 ) const; + void _HasValidBoxes( const SwTable&, String&, String&, String* = 0, + void* pPara = 0 ) const; + void _SplitMergeBoxNm( const SwTable&, String&, String&, String* = 0, + void* pPara = 0 ) const; + + void GetBoxes( const SwTableBox& rStt, const SwTableBox& rEnd, + SwSelBoxes& rBoxes ) const; + String ScanString( FnScanFormel fnFormel, const SwTable& rTbl, + void* = 0 ) const; + + const SwTable* FindTable( SwDoc& rDoc, const String& rNm ) const; + +protected: + enum NameType { EXTRNL_NAME, INTRNL_NAME, REL_NAME }; + + String sFormel; // akt. Formel + NameType eNmType; // akt. Darstellungs Art + BOOL bValidValue; // TRUE: Formel neu berechnen + + // suche den Node, in dem die Formel steht: + // TextFeld -> TextNode, + // BoxAttribut -> BoxStartNode + // !!! MUSS VON JEDER ABLEITUNG UEBERLADEN WERDEN !!! + virtual const SwNode* GetNodeOfFormula() const = 0; + + SwTableFormula( const String& rFormel ); + + String MakeFormel( SwTblCalcPara& rCalcPara ) const + { + return ScanString( &SwTableFormula::_MakeFormel, + *rCalcPara.pTbl, &rCalcPara ); + } + + static USHORT GetLnPosInTbl( const SwTable& rTbl, const SwTableBox* pBox ); + +public: + + SwTableFormula( const SwTableFormula& rCpy ) { *this = rCpy; } + SwTableFormula& operator=( const SwTableFormula& rCpy ) + { + sFormel = rCpy.sFormel; + eNmType = rCpy.eNmType; + bValidValue = rCpy.bValidValue; + return *this; + } + + // erzeuge aus der internen (fuer CORE) die externe (fuer UI) Formel + void PtrToBoxNm( const SwTable* pTbl ); + // erzeuge aus der externen (fuer UI) die interne (fuer CORE) Formel + void BoxNmToPtr( const SwTable* pTbl ); + // erzeuge aus der externen/internen Formel die relative Formel + void ToRelBoxNm( const SwTable* pTbl ); + // wird vorm/nach dem mergen/splitten von Tabellen rerufen + void ToSplitMergeBoxNm( SwTableFmlUpdate& rTblUpd ); + + // ist gerade eine intern Darstellung aktiv + BOOL IsIntrnlName() const { return eNmType == INTRNL_NAME; } + // erfrage die akt. Darstellung der Formel + NameType GetNameType() const { return eNmType; } + + // erfrage/setze das Flag, ob der akt. Wert gueltig ist + BOOL IsValid() const { return bValidValue; } + inline void ChgValid( BOOL bNew ) { bValidValue = bNew; } + + const String& GetFormula() const { return sFormel; } + void SetFormula( const String& rNew ) + { + sFormel = rNew; + bValidValue = FALSE; + eNmType = EXTRNL_NAME; + } + + USHORT GetBoxesOfFormula( const SwTable& rTbl, SwSelBoxes& rBoxes ); + // sind alle Boxen gueltig, auf die sich die Formel bezieht? + BOOL HasValidBoxes() const; +}; + + + +#endif diff --git a/sw/inc/charatr.hxx b/sw/inc/charatr.hxx new file mode 100644 index 000000000000..7e65a2d47737 --- /dev/null +++ b/sw/inc/charatr.hxx @@ -0,0 +1,180 @@ +/************************************************************************* + * + * $RCSfile: charatr.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _CHARATR_HXX +#define _CHARATR_HXX + +#include "format.hxx" +#include "hintids.hxx" // fuer die WhichIds + + +/****************************************************************************** + * Implementierung der Charakter-Attribut Methoden vom SwAttrSet + * AMA 12.10.94: Umstellung auf SvxItems. + ******************************************************************************/ + +inline const SvxPostureItem &SwAttrSet::GetPosture(BOOL bInP) const + { return (const SvxPostureItem&)Get( RES_CHRATR_POSTURE,bInP); } +inline const SvxPostureItem &SwAttrSet::GetCJKPosture(BOOL bInP) const + { return (const SvxPostureItem&)Get( RES_CHRATR_CJK_POSTURE,bInP); } +inline const SvxPostureItem &SwAttrSet::GetCTLPosture(BOOL bInP) const + { return (const SvxPostureItem&)Get( RES_CHRATR_CTL_POSTURE,bInP); } +inline const SvxWeightItem &SwAttrSet::GetWeight(BOOL bInP) const + { return (const SvxWeightItem&)Get( RES_CHRATR_WEIGHT,bInP); } +inline const SvxWeightItem &SwAttrSet::GetCJKWeight(BOOL bInP) const + { return (const SvxWeightItem&)Get( RES_CHRATR_CJK_WEIGHT,bInP); } +inline const SvxWeightItem &SwAttrSet::GetCTLWeight(BOOL bInP) const + { return (const SvxWeightItem&)Get( RES_CHRATR_CTL_WEIGHT,bInP); } +inline const SvxShadowedItem &SwAttrSet::GetShadowed(BOOL bInP) const + { return (const SvxShadowedItem&)Get( RES_CHRATR_SHADOWED,bInP); } +inline const SvxAutoKernItem &SwAttrSet::GetAutoKern(BOOL bInP) const + { return (const SvxAutoKernItem&)Get( RES_CHRATR_AUTOKERN,bInP); } +inline const SvxWordLineModeItem &SwAttrSet::GetWordLineMode(BOOL bInP) const + { return (const SvxWordLineModeItem&)Get( RES_CHRATR_WORDLINEMODE,bInP); } +inline const SvxContourItem &SwAttrSet::GetContour(BOOL bInP) const + { return (const SvxContourItem&)Get( RES_CHRATR_CONTOUR,bInP); } +inline const SvxKerningItem &SwAttrSet::GetKerning(BOOL bInP) const + { return (const SvxKerningItem&)Get( RES_CHRATR_KERNING,bInP); } +inline const SvxUnderlineItem &SwAttrSet::GetUnderline(BOOL bInP) const + { return (const SvxUnderlineItem&)Get( RES_CHRATR_UNDERLINE,bInP); } +inline const SvxCrossedOutItem &SwAttrSet::GetCrossedOut(BOOL bInP) const + { return (const SvxCrossedOutItem&)Get( RES_CHRATR_CROSSEDOUT,bInP); } +inline const SvxFontHeightItem &SwAttrSet::GetSize(BOOL bInP) const + { return (const SvxFontHeightItem&)Get( RES_CHRATR_FONTSIZE,bInP); } +inline const SvxFontHeightItem &SwAttrSet::GetCJKSize(BOOL bInP) const + { return (const SvxFontHeightItem&)Get( RES_CHRATR_CJK_FONTSIZE,bInP); } +inline const SvxFontHeightItem &SwAttrSet::GetCTLSize(BOOL bInP) const + { return (const SvxFontHeightItem&)Get( RES_CHRATR_CTL_FONTSIZE,bInP); } +inline const SvxPropSizeItem &SwAttrSet::GetPropSize(BOOL bInP) const + { return (const SvxPropSizeItem&)Get( RES_CHRATR_PROPORTIONALFONTSIZE,bInP); } +inline const SvxFontItem &SwAttrSet::GetFont(BOOL bInP) const + { return (const SvxFontItem&)Get( RES_CHRATR_FONT,bInP); } +inline const SvxFontItem &SwAttrSet::GetCJKFont(BOOL bInP) const + { return (const SvxFontItem&)Get( RES_CHRATR_CJK_FONT,bInP); } +inline const SvxFontItem &SwAttrSet::GetCTLFont(BOOL bInP) const + { return (const SvxFontItem&)Get( RES_CHRATR_CTL_FONT,bInP); } +inline const SvxColorItem &SwAttrSet::GetColor(BOOL bInP) const + { return (const SvxColorItem&)Get( RES_CHRATR_COLOR,bInP); } +inline const SvxCharSetColorItem &SwAttrSet::GetCharSetColor(BOOL bInP) const + { return (const SvxCharSetColorItem&)Get( RES_CHRATR_CHARSETCOLOR,bInP); } +inline const SvxLanguageItem &SwAttrSet::GetLanguage(BOOL bInP) const + { return (const SvxLanguageItem&)Get( RES_CHRATR_LANGUAGE,bInP); } +inline const SvxLanguageItem &SwAttrSet::GetCJKLanguage(BOOL bInP) const + { return (const SvxLanguageItem&)Get( RES_CHRATR_CJK_LANGUAGE,bInP); } +inline const SvxLanguageItem &SwAttrSet::GetCTLLanguage(BOOL bInP) const + { return (const SvxLanguageItem&)Get( RES_CHRATR_CTL_LANGUAGE,bInP); } +inline const SvxEscapementItem &SwAttrSet::GetEscapement(BOOL bInP) const + { return (const SvxEscapementItem&)Get( RES_CHRATR_ESCAPEMENT,bInP); } +inline const SvxCaseMapItem &SwAttrSet::GetCaseMap(BOOL bInP) const + { return (const SvxCaseMapItem&)Get( RES_CHRATR_CASEMAP,bInP); } +inline const SvxNoHyphenItem &SwAttrSet::GetNoHyphenHere(BOOL bInP) const + { return (const SvxNoHyphenItem&)Get( RES_CHRATR_NOHYPHEN,bInP); } +inline const SvxBlinkItem &SwAttrSet::GetBlink(BOOL bInP) const + { return (const SvxBlinkItem&)Get( RES_CHRATR_BLINK,bInP); } +inline const SvxBrushItem &SwAttrSet::GetChrBackground( BOOL bInP ) const + { return (const SvxBrushItem&)Get( RES_CHRATR_BACKGROUND, bInP ); } + +/****************************************************************************** + * Implementierung der Charakter-Attribut Methoden vom SwFmt + * AMA: 12.10.94: Umstellung auf SvxItems. + ******************************************************************************/ + +inline const SvxPostureItem &SwFmt::GetPosture(BOOL bInP) const + { return aSet.GetPosture(bInP); } +inline const SvxWeightItem &SwFmt::GetWeight(BOOL bInP) const + { return aSet.GetWeight(bInP); } +inline const SvxShadowedItem &SwFmt::GetShadowed(BOOL bInP) const + { return aSet.GetShadowed(bInP); } +inline const SvxAutoKernItem &SwFmt::GetAutoKern(BOOL bInP) const + { return aSet.GetAutoKern(bInP); } +inline const SvxWordLineModeItem &SwFmt::GetWordLineMode(BOOL bInP) const + { return aSet.GetWordLineMode(bInP); } +inline const SvxContourItem &SwFmt::GetContour(BOOL bInP) const + { return aSet.GetContour(bInP); } +inline const SvxKerningItem &SwFmt::GetKerning(BOOL bInP) const + { return aSet.GetKerning(bInP); } +inline const SvxUnderlineItem &SwFmt::GetUnderline(BOOL bInP) const + { return aSet.GetUnderline(bInP); } +inline const SvxCrossedOutItem &SwFmt::GetCrossedOut(BOOL bInP) const + { return aSet.GetCrossedOut(bInP); } +inline const SvxFontHeightItem &SwFmt::GetSize(BOOL bInP) const + { return aSet.GetSize(bInP); } +inline const SvxPropSizeItem &SwFmt::GetPropSize(BOOL bInP) const + { return aSet.GetPropSize(bInP); } +inline const SvxFontItem &SwFmt::GetFont(BOOL bInP) const + { return aSet.GetFont(bInP); } +inline const SvxColorItem &SwFmt::GetColor(BOOL bInP) const + { return aSet.GetColor(bInP); } +inline const SvxCharSetColorItem &SwFmt::GetCharSetColor(BOOL bInP) const + { return aSet.GetCharSetColor(bInP); } +inline const SvxLanguageItem &SwFmt::GetLanguage(BOOL bInP) const + { return aSet.GetLanguage(bInP); } +inline const SvxEscapementItem &SwFmt::GetEscapement(BOOL bInP) const + { return aSet.GetEscapement(bInP); } +inline const SvxCaseMapItem &SwFmt::GetCaseMap(BOOL bInP) const + { return aSet.GetCaseMap(bInP); } +inline const SvxNoHyphenItem &SwFmt::GetNoHyphenHere(BOOL bInP) const + { return aSet.GetNoHyphenHere(bInP); } +inline const SvxBlinkItem &SwFmt::GetBlink(BOOL bInP) const + { return aSet.GetBlink(bInP); } +inline const SvxBrushItem &SwFmt::GetChrBackground(BOOL bInP) const + { return aSet.GetChrBackground(bInP); } + +#endif diff --git a/sw/inc/charfmt.hxx b/sw/inc/charfmt.hxx new file mode 100644 index 000000000000..0209942b6472 --- /dev/null +++ b/sw/inc/charfmt.hxx @@ -0,0 +1,90 @@ +/************************************************************************* + * + * $RCSfile: charfmt.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _CHARFMT_HXX +#define _CHARFMT_HXX + +#ifndef _FORMAT_HXX +#include <format.hxx> +#endif + +class SwCharFmt : public SwFmt +{ + friend class SwDoc; + friend class SwTxtFmtColl; + + SwCharFmt( SwAttrPool& rPool, const sal_Char* pFmtName, + SwCharFmt *pDerivedFrom ) + : SwFmt( rPool, pFmtName, aCharFmtSetRange, pDerivedFrom, RES_CHRFMT ) + {} + SwCharFmt( SwAttrPool& rPool, const String &rFmtName, + SwCharFmt *pDerivedFrom ) + : SwFmt( rPool, rFmtName, aCharFmtSetRange, pDerivedFrom, RES_CHRFMT ) + {} + + +public: + TYPEINFO(); //Bereits in Basisklasse Client drin. +}; + +#endif + + + diff --git a/sw/inc/chpfld.hxx b/sw/inc/chpfld.hxx new file mode 100644 index 000000000000..fcca48550201 --- /dev/null +++ b/sw/inc/chpfld.hxx @@ -0,0 +1,129 @@ +/************************************************************************* + * + * $RCSfile: chpfld.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _CHPFLD_HXX +#define _CHPFLD_HXX + +#include "fldbas.hxx" + +class SwFrm; +class SwTxtNode; + +#ifndef _UNOOBJ_HXX +#include <unoobj.hxx> +#endif + +enum SwChapterFormat +{ + CF_BEGIN, + CF_NUMBER = CF_BEGIN, // nur die Kapitelnummer + CF_TITLE, // nur die "Ueberschrift" + CF_NUM_TITLE, // Kapitelnummer und "Ueberschrift" + CF_NUMBER_NOPREPST, // nur die Kapitelnummer ohne Post/Prefix + CF_NUM_NOPREPST_TITLE, // Kapitelnummer ohne Post/Prefix und "Ueberschrift" + CF_END +}; + +/*-------------------------------------------------------------------- + Beschreibung: Kapitel + --------------------------------------------------------------------*/ + +class SwChapterFieldType : public SwFieldType +{ +public: + SwChapterFieldType(); + + virtual SwFieldType* Copy() const; + +}; + + + +/*-------------------------------------------------------------------- + Beschreibung: Kapitelnummer + --------------------------------------------------------------------*/ +class SwChapterField : public SwField +{ + friend class SwChapterFieldType; + BYTE nLevel; + String sTitle, sNumber, sPre, sPost; +public: + SwChapterField(SwChapterFieldType*, ULONG nFmt = 0); + + void ChangeExpansion( const SwFrm*, const SwTxtNode*, BOOL bSrchNum = FALSE); + + virtual String Expand() const; + virtual SwField* Copy() const; + + inline BYTE GetLevel() const; + inline void SetLevel(BYTE); + + inline const String& GetNumber() const; + inline const String& GetTitle() const; + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +inline BYTE SwChapterField::GetLevel() const { return nLevel; } +inline void SwChapterField::SetLevel(BYTE nLev) { nLevel = nLev; } +inline const String& SwChapterField::GetNumber() const { return sNumber; } +inline const String& SwChapterField::GetTitle() const { return sTitle; } + +#endif // _CHPFLD_HXX diff --git a/sw/inc/cmdid.h b/sw/inc/cmdid.h new file mode 100644 index 000000000000..175464741804 --- /dev/null +++ b/sw/inc/cmdid.h @@ -0,0 +1,1225 @@ +/************************************************************************* + * + * $RCSfile: cmdid.h,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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): _______________________________________ + * + * + ************************************************************************/ +/****************************************************************************** +Achtung: Ab sofort sind in diesem File keine C++-Kommentare (//) mehr + erlaubt, da es von swicli.c included wird! +******************************************************************************/ + +#ifndef _SFX_HRC +#include <sfx2/sfx.hrc> +#endif + +/* Flags die mittels des Disable-Features in den Slot-Definitionen ausgenutzt + * werden */ +#define SW_DISABLE_ON_PROTECTED_CURSOR 0x00000001 +#define SW_DISABLE_ON_MAILBOX_EDITOR 0x00000002 + + +#define FN_FILE SID_SW_START +#define FN_EDIT (SID_SW_START + 100) +#define FN_VIEW (SID_SW_START + 200) +#define FN_INSERT (SID_SW_START + 300) +#define FN_FORMAT (SID_SW_START + 400) +#define FN_EXTRA (SID_SW_START + 600) +#define FN_WINDOW (SID_SW_START + 700) +#define FN_HELP (SID_SW_START + 800) +#define FN_SELECTION (SID_SW_START + 900) +#define FN_QUERY (SID_SW_START + 1000) +#define FN_ENVELP (SID_SW_START + 1050) +#define FN_PARAM (SID_SW_START + 1100) +#define FN_STAT (SID_SW_START + 1180) +#define FN_PRNOPT (SID_SW_START + 1200) +#define FN_PGPREVIEW (SID_SW_START + 1250) +#define FN_FRAME (SID_SW_START + 1300) +#define FN_INSERT2 (SID_SW_START + 1400) +#define FN_FORMAT2 (SID_SW_START + 1600) +#define FN_EDIT2 (SID_SW_START + 1800) +#define FN_QUERY2 (SID_SW_START + 2000) +#define FN_EXTRA2 (SID_SW_START + 2200) +#define FN_PARAM2 (SID_SW_START + 2400) + +#define HELP_OFFSET 1100 +#define CMD_STR_OFFSET 2200 +#define CMD_STR_OFFSET_MULTILANG 3300 +#define CMDID_END 5500 + +/*-------------------------------------------------------------------- + Bereich: Datei + --------------------------------------------------------------------*/ +#define FN_CLOSE_FILE (FN_FILE + 1 ) /* Schliessen */ +#define FN_LAUNCH_REGISTRY (FN_FILE + 2 ) /* Ablage */ + + +#define FN_NEW_GLOBAL_DOC (FN_FILE + 4 ) /* Globaldokument erzeugen */ +#define FN_NEW_FILE (FN_FILE + 5 ) /* Neu */ +#define FN_NEW_FILE_DLG (FN_FILE + 6 ) /* Neu Dialog */ +#define FN_OPEN_FILE (FN_FILE + 7 ) /* Oeffnen */ +#define FN_EDIT_FILE (FN_FILE + 8 ) /* Oeffnen oder ToTop */ + +#define FN_INETFILE (FN_FILE + 9 ) /* Internet File-Dialog */ + +#define FN_PRINT_FILE (FN_FILE + 10) /* Drucken */ +#define FN_PRINT_FILE_OPTIONS (FN_FILE + 11) /* Drucken Optionen */ +#define FN_SAVE_FILE_AS (FN_FILE + 12) /* Speichern unter */ +#define FN_SAVE_FILE (FN_FILE + 13) /* Speichern */ +#define FN_SETUP_PRINTER (FN_FILE + 14) /* Druckereinstellung */ +#define FN_SETUP_PRINTER_DLG (FN_FILE + 15) /* Druckereinstellung */ +#define FN_SHOW_PREVIEW (FN_FILE + 16) /* Druckbild */ +#define FN_EXIT (FN_FILE + 17) /* Writer beenden */ +#define FN_PRINT_CFG_DLG (FN_FILE + 18) /* Optionen Drucken */ + + + +#define FN_SAVE_ALL (FN_FILE + 23) /* Alle Files speichern */ +#define FN_NEW_FILE_DEFAULT (FN_FILE + 24) /* Neue Datei mit Standardvorlage */ +#define FN_PRINT_FILE_DEFAULT (FN_FILE + 25) /* Drucken mit Defaults */ +#define FN_LAUNCH_EQ_EDITOR (FN_FILE + 26) /* Formel Editor */ +#define FN_CHANGE_PRINTER (FN_FILE + 27) /* Drucker einstellen */ +#define FN_FAX_END (FN_FILE + 29) /* Faxen fertig, Id fuer PostMessage */ + +#define FN_SELECT_DATABASE (FN_FILE + 30) /* Selektion Datenbank */ +#define FN_DOC_INFO_DLG (FN_FILE + 31) /* Dokumentinfo */ +#define FN_DOC_MGR_DLG (FN_FILE + 32) /* Dokument-Manager */ + +#define FN_GET_DOCSTAT (FN_FILE + 33) /* Dokumentstatistik einzeln auslesen */ + + +#define FN_SAVE_SELECTION (FN_FILE + 35) /* Selektion speichern */ + +#define FN_OUTLINE_TO_IMPRESS (FN_FILE + 36) /* Outline zu StarImpress senden */ +#define FN_OUTLINE_TO_CLIPBOARD (FN_FILE + 37) /* Outline in das Clipboad copieren */ + +#define FN_NEW_HTML_DOC (FN_FILE + 40 ) /* HTML-Dokument "erzeugen" */ + +#define FN_APP_START (FN_FILE + 98) /* fuer Makro bei App.Start */ +#define FN_APP_END (FN_FILE + 99) /* fuer Makro bei App.Ende */ + +/*-------------------------------------------------------------------- + Bereich: Bearbeiten + --------------------------------------------------------------------*/ +#define FN_CLEAR (FN_EDIT + 1 ) /* Loeschen */ +#define FN_COPY (FN_EDIT + 2 ) /* Kopieren */ +#define FN_CUT (FN_EDIT + 3 ) /* Ausschneiden */ +#define FN_EDIT_FIELD (FN_EDIT + 4 ) /* Textbefehl bearbeiten */ +#define FN_EDIT_FIELD_DLG (FN_EDIT + 5 ) /* Textbefehl bearbeiten */ +#define FN_EDIT_FILE_INFO (FN_EDIT + 6 ) /* Dokumentinfo */ +#define FN_EDIT_FILE_INFO_DLG (FN_EDIT + 7 ) /* Dokumentinfo Dialog */ +#define FN_EDIT_LINK (FN_EDIT + 8 ) /* Verknuepfungen */ +#define FN_EDIT_LINK_DLG (FN_EDIT + 9 ) /* Verknuepfungen */ +#define FN_GOTO (FN_EDIT + 11) /* Gehe zu */ + +#define FN_PASTE (FN_EDIT + 13) /* Einfuegen */ +#define FN_PASTESPECIAL (FN_EDIT + 14) /* Verknuepfung einfuegen */ +#define FN_PASTESPECIAL_DLG (FN_EDIT + 15) /* Verknuepfung einfuegen */ + +#define FN_NUMBER_BULLETS (FN_EDIT + 21) /* Bullets */ +#define FN_REPEAT (FN_EDIT + 22) /* Letzten Befehl wiederholen */ +#define FN_EDIT_IDX_ENTRY_DLG (FN_EDIT + 23) /* Index-Entry bearbeiten */ +#define FN_UPDATE_FIELDS (FN_EDIT + 26) /* Feldinhalte erneuern */ +#define FN_EXECUTE_MACROFIELD (FN_EDIT + 27) /* Macrofeld ausfuehren */ +#define FN_EDIT_FORMULA (FN_EDIT + 28) /* Formel in RibbonBar bearbeiten */ +#define FN_CALC_TABLE (FN_EDIT + 29) /* Tabelle durchrechnen */ + +/*-------------------------------------------------------------------- + Bereich: Bullets + --------------------------------------------------------------------*/ +#define FN_NUM_BULLET_DOWN (FN_EDIT + 30) /* Runterstufen */ +#define FN_NUM_BULLET_UP (FN_EDIT + 31) /* Raufstufen */ +#define FN_NUM_BULLET_PREV (FN_EDIT + 32) /* zum vorigen Eintrag */ +#define FN_NUM_BULLET_NEXT (FN_EDIT + 33) /* zum naechsten Eintrag */ +#define FN_NUM_BULLET_MOVEUP (FN_EDIT + 34) /* nach oben schieben */ +#define FN_NUM_BULLET_MOVEDOWN (FN_EDIT + 35) /* nach unten schieben */ +#define FN_NUM_BULLET_NONUM (FN_EDIT + 36) /* Eintrag ohne Nummer */ +#ifndef FN_NUM_BULLET_OFF //in SVX already +#define FN_NUM_BULLET_OFF (FN_EDIT + 37) /* Numerierung aus */ +#endif + + +// schon im SVX +//#define FN_NUM_BULLET_ON (FN_EDIT + 38) /* Numerierung mit Bullets an */ + +#define FN_NUM_BULLET_OUTLINE_DOWN (FN_EDIT + 39) /* Runterstufen mit Unterpunkten */ +#define FN_NUM_BULLET_OUTLINE_UP (FN_EDIT + 40) /* Raufstufen mit Unterpunkten */ +#define FN_NUM_BULLET_OUTLINE_MOVEUP (FN_EDIT + 41) /* nach oben schieben mit Unterpunkten */ +#define FN_NUM_BULLET_OUTLINE_MOVEDOWN (FN_EDIT + 42) /* nach unten schieben mit Unterpunkten */ +#define FN_UPDATE_INPUTFIELDS (FN_EDIT + 43) /* Eingabefelder updaten */ +// schon im SVX +//#define FN_NUM_NUMBERING_ON (FN_EDIT + 44) /* Numerierung an */ + +#define FN_NUM_OR_NONUM (FN_EDIT + 46) /* Nummer ein-/aus */ + +#define FN_GOTO_NEXT_INPUTFLD (FN_EDIT + 47) /* zum naechsten EingabeFeld */ +#define FN_GOTO_PREV_INPUTFLD (FN_EDIT + 48) /* zum vorherigen EingabeFeld */ + +#define FN_REPEAT_SEARCH (FN_EDIT + 50) /* Suche wiederholen */ +#define FN_REPEAT_REPLACE (FN_EDIT + 51) /* Ersetzen wiederholen */ +#define FN_UPDATE_GRAFIC (FN_EDIT + 53) /* Grafik aendern */ +#define FN_SETTAB_ATCURPOS (FN_EDIT + 54) /* Tab an der aktuellen Pos setzen */ +#define FN_SET_LR_IND_ATCURPOS (FN_EDIT + 55) /* EZE und LR setzen */ +#define FN_FRMCNT_TO_BODY (FN_EDIT + 56) /* Rahmeninhalt zu Text */ +#define FN_UPDATE_TOXBASE (FN_EDIT + 57) /* Naechstes Verzeichnis erneuern */ + +#define FN_REPAGINATE (FN_EDIT + 61) /* Neuformatierung erzwingen */ +#define FN_EDIT_FOOTNOTE (FN_EDIT + 62) /* Fussnote bearbeiten */ + +#define FN_EDIT_REGION (FN_EDIT + 65) /* Bereiche bearbeiten */ +#define FN_GOTO_REFERENCE (FN_EDIT + 66) /* Von der Refmark zur Referenz */ + +// schon im Svx definiert +#define FN_NEXT_BOOKMARK (FN_EDIT + 68) /* */ +#define FN_PREV_BOOKMARK (FN_EDIT + 69) /* */ + +/*Navigator ToolBoxen*/ +#define FN_SELECT_BOOKMARK (FN_EDIT + 70) /**/ +#define FN_ITEM_DOWN (FN_EDIT + 71) /**/ +#define FN_ITEM_LEFT (FN_EDIT + 72) /**/ +#define FN_ITEM_RIGHT (FN_EDIT + 73) /**/ +#define FN_ITEM_UP (FN_EDIT + 74) /**/ +#define FN_DOWN (FN_EDIT + 75) /**/ + +#define FN_SELECT_FOOTER (FN_EDIT + 77) /**/ +#define FN_SELECT_FRAME (FN_EDIT + 78) /**/ +#define FN_SELECT_HEADER (FN_EDIT + 79) /**/ +#define FN_PAGENUMBER (FN_EDIT + 80) /**/ +#define FN_SELECT_AUTO_BOOKMARK (FN_EDIT + 81) /**/ +#define FN_SELECT_FOOTNOTE (FN_EDIT + 82) /**/ +#define FN_SELECT_SET_AUTO_BOOKMARK (FN_EDIT + 83) /**/ +#define FN_SELECT_TABLE (FN_EDIT + 84) /**/ +#define FN_SELECT_INDEX (FN_EDIT + 85) /**/ +#define FN_UP (FN_EDIT + 86) /**/ + + +//#define FN_DELETE_REGION (FN_EDIT + 89) /* Bereiche loeschen */ + + +#define FN_SELECT_PARA (FN_EDIT + 97) /* Absatz selektieren */ + +#define FN_SELECT_CONTENT (FN_EDIT + 99) /* Navigator - Inhaltstyp */ + + + + +#define FN_UPDATE_ALL_LINKS (FN_EDIT2 + 24) /* alle Links updaten */ + +#define FN_REDLINE_ON (FN_EDIT2 + 25) /* Redlining anschalten */ +#define FN_REDLINE_SHOW (FN_EDIT2 + 26) /* Redlining anzeigen */ +#define FN_REDLINE_COMMENT (FN_EDIT2 + 27) /* Redlining kommentieren */ + +#define FN_UPDATE_ALL (FN_EDIT2 + 28) /* FN_UPDATE_ALL_LINKS, + FN_UPDATE_FIELDS, + FN_UPDATE_TOX, + CalcLayout */ + +#define FN_REDLINE_ACCEPT (FN_EDIT2 + 29) /* Redlining annehmen/ablehnen */ +#define FN_ATTR_COLUMNS (FN_EDIT2 + 31) /* SlotId fuer SwFmtCol */ +#define FN_EDIT_CURRENT_TOX (FN_EDIT2 + 32) /* edit current index */ +#define FN_EDIT_AUTH_ENTRY_DLG (FN_EDIT2 + 33) /* edit authorities entry*/ +#define FN_UPDATE_CHARTS (FN_EDIT2 + 34) /* update all charts */ + +#define FN_EDIT_HYPERLINK (FN_EDIT2 + 35) /* edit hyperlink */ + +/*-------------------------------------------------------------------- + Bereich: Bearbeiten + --------------------------------------------------------------------*/ + +#define FN_REFRESH_VIEW (FN_VIEW + 1) /* Refresh/Redraw */ +#define FN_SHOW_OUTLINE_VIEW (FN_VIEW + 2) /* Gliederungsansicht */ + +#define FN_DRAW_WRAP_DLG (FN_VIEW + 3) /* Draw Umlauf-Dlg */ + +#define FN_RULER (FN_VIEW + 11) /* Horizontales Lineal */ + +#define FN_VIEW_GRAPHIC (FN_VIEW + 13) /* Grafiken anzeigen */ +#define FN_VIEW_BOUNDS (FN_VIEW + 14) /* Begrenzungen */ +#define FN_VIEW_FIELDS (FN_VIEW + 15) /* Textbefehle */ +#define FN_VLINEAL (FN_VIEW + 16) /* Vertikales Lineal */ +#define FN_VSCROLLBAR (FN_VIEW + 17) /* Vertikaler Scrollbar */ +#define FN_HSCROLLBAR (FN_VIEW + 18) /* Horizontaler Scrollbar */ +#define FN_TOOLBOX_TOGGLE (FN_VIEW + 19) /* Toolboxinhalte umschalten */ +#define FN_VIEWOPTIONS_ON (FN_VIEW + 20) /* Gruppe Viewoptions an */ +#define FN_VIEWOPTIONS_OFF (FN_VIEW + 21) /* Gruppe Viewoptions aus */ +#define FN_CONTROLS_ON (FN_VIEW + 22) /* Gruppe Bedienelemte an */ +#define FN_CONTROLS_OFF (FN_VIEW + 23) /* Gruppe Bedienelemte aus */ + +#define FN_VIEW_META_CHARS (FN_VIEW + 24) /* Sonderzeichen anzeigen */ +#define FN_VIEW_MARKS (FN_VIEW + 25) /* Markierungen anzeigen */ +#define FN_VIEW_FIELDNAME (FN_VIEW + 26) /* Feldname anzeigen */ +#define FN_VIEW_TABLEGRID (FN_VIEW + 27) /* Tabellenbegrenzungen anzeigen */ + +#define FN_LAUNCH_SIM (FN_VIEW + 28) /* StarImage starten */ +#define FN_SET_PAGE (FN_VIEW + 29) /* Seitenvorlage am Absatz setzen */ + +#define FN_TOOLBOX_SWITCH (FN_VIEW + 30) /* Auf Textshell umschalten */ + + +//noch mehr Navigator +#define FN_CONTENT_LB (FN_VIEW + 32) /**/ +#define FN_SHOW_CONTENT_BOX (FN_VIEW + 33) /**/ +#define FN_SHOW_ROOT (FN_VIEW + 34) /**/ +#define FN_DROP_REGION (FN_VIEW + 35) /**/ +#define FN_OUTLINE_LEVEL (FN_VIEW + 36) /**/ + +#define FN_PRINT_LAYOUT (FN_VIEW + 37) /* invertierter BrowseMode */ + +#define FN_DROP_REGION_LINK (FN_VIEW + 38) /**/ +#define FN_DROP_REGION_COPY (FN_VIEW + 39) /**/ + +#define FN_SCROLL_NAVIGATION (FN_VIEW + 40) /* Navigationscontroller am Scrollbar*/ +#define FN_SCROLL_NEXT_PREV (FN_VIEW + 41) /* arbeitet den MoveType ab */ + +#define FN_VIEW_HIDDEN_PARA (FN_VIEW + 42) /* Versteckte Absaetze */ +#define FN_VIEW_SMOOTH_SCROLL (FN_VIEW + 43) + +#define FN_GLOBAL_SWITCH (FN_VIEW + 44) /* umschalten zw. Global und Inhalt*/ +#define FN_GLOBAL_EDIT (FN_VIEW + 45) /* bearbeiten */ +#define FN_GLOBAL_UPDATE (FN_VIEW + 46) /* aktualisieren */ +#define FN_GLOBAL_OPEN (FN_VIEW + 47) /* oeffnen */ +#define FN_GLOBAL_SAVE_CONTENT (FN_VIEW + 48) /* Inhalt der Verknuepfung mitspeichern */ +#define FN_CREATE_NAVIGATION (FN_VIEW + 49) /* Navigations-Controller erzeugen */ +#define FN_PREVIEW_PRINT_OPTIONS (FN_VIEW + 50) /* Optionsdialog Preview drucken */ +#define FN_PREVIEW_ZOOM (FN_VIEW + 51) /* der Tabellencontroller fuer den Zoom */ + +#define FN_SET_MODOPT_TBLNUMFMT (FN_VIEW + 52) /* Zahlenerkennung in Tabellen */ + +/*-------------------------------------------------------------------- + Bereich: Einfuegen + --------------------------------------------------------------------*/ +// schon im Svx definiert +#define FN_INSERT_BOOKMARK (FN_INSERT + 2 ) /* Sprungmarke einfuegen */ + +// schon im SVX unter der gleichen Id +//#define FN_INSERT_BREAK (FN_INSERT + 3 ) /* Umbruch */ + +#define FN_INSERT_BREAK_DLG (FN_INSERT + 4 ) /* Umbruch */ +#define FN_INSERT_COLUMN_BREAK (FN_INSERT + 5 ) /* Spaltenumbruch */ +#define FN_INSERT_DATE_TIME (FN_INSERT + 6 ) /* Datum/Uhrzeit */ +#define FN_INSERT_FIELD (FN_INSERT + 8 ) /* Textbefehl */ +#define FN_CHANGE_DBFIELD (FN_INSERT + 9 ) /* Datenbankfeld aendern */ + +#define FN_INSERT_CAPTION (FN_INSERT + 10) /* Beschriftung */ +#define FN_INSERT_FOOTNOTE_DLG (FN_INSERT + 12) /* Dialog Fussnote */ + +#define FN_INSERT_REF_FIELD (FN_INSERT + 13) /* Refernzfeld einfuegen */ + +#define FN_INSERT_HYPERLINK (FN_INSERT + 14) /* Zeichendialog/HyperlinkPage*/ + +#define FN_INSERT_INDEX (FN_INSERT + 16) /* Stichworteintrag */ +#define FN_INSERT_INDEX_DLG (FN_INSERT + 17) /* Stichworteintrag */ +#define FN_INSERT_LINEBREAK (FN_INSERT + 18) /* Zeilenumbruch */ + +#define FN_INSERT_OBJECT (FN_INSERT + 21) /* Object */ +#define FN_INSERT_OBJECT_DLG (FN_INSERT + 22) /* Object */ +#define FN_INSERT_PAGEBREAK (FN_INSERT + 23) /* Seitenumbruch */ +#define FN_INSERT_PAGENO (FN_INSERT + 24) /* Seitennummer */ +#define FN_INSERT_PARAGRAPH (FN_INSERT + 25) /* Absatz */ +#define FN_INSERT_RECORD (FN_INSERT + 26) /* Datensatz einfuegen */ +#define FN_MERGE_RECORD (FN_INSERT + 27) /* Datensatz mischen */ +#define FN_INSERT_SYMBOL (FN_INSERT + 28) /* Sonderzeichen */ +#define FN_POSTIT (FN_INSERT + 29) /* PostIt einfuegen/bearbeiten */ +#define FN_INSERT_TABLE (FN_INSERT + 30) /* Tabelle */ +// schon im Svx definiert +#define FN_INSERT_COLS (FN_INSERT + 32) /* Spalten einfuegen */ +#define FN_INSERT_FRAME_INTERACT (FN_INSERT + 33) /* Rahmen einfuegen aktiv */ +#define FN_INSERT_FRAME (FN_INSERT + 34) /* Rahmen einfuegen */ + +#define FN_INSERT_IDX_ENTRY_DLG (FN_INSERT + 35) /* Verzeichniseintrag einfuegen */ +#define FN_INSERT_FRAME_INTERACT_NOCOL (FN_INSERT + 36) /*insert interactive non column frame*/ + +#define FN_INSERT_SOFT_HYPHEN (FN_INSERT + 43) /* weicher Trenner */ +#define FN_INSERT_HARD_SPACE (FN_INSERT + 44) /* hartes Space */ +#define FN_INSERT_REGION (FN_INSERT + 45) /* Bereich einfuegen */ + + + +#define FN_TOOL_GROUP (FN_INSERT + 47) /* Objekte gruppieren */ +#define FN_TOOL_UNGROUP (FN_INSERT + 48) /* Gruppierng aufheben */ + +#define FN_TOOL_ANKER (FN_INSERT + 49) /* Draw-Objekt umankern */ +#define FN_TOOL_ANKER_PAGE (FN_INSERT + 50) /* Draw-Objekt an Seite verankern */ +#define FN_TOOL_ANKER_PARAGRAPH (FN_INSERT + 51) /* Draw-Objekt am Absatz verankern */ +#define FN_TOOL_HIERARCHIE (FN_INSERT + 52) /* Hierarchie aendern */ +#define FN_TOOL_VMIRROR (FN_INSERT + 53) /* Objekt in unteren Layer */ +#define FN_TOOL_HMIRROR (FN_INSERT + 54) /* Objekt in oberen Layer */ + +//#define FN_QRY_OPEN_DB (FN_INSERT + 55) /* Datenbank oeffnen (Basic) */ +//#define FN_QRY_DEFINE_DB (FN_INSERT + 56) /* Neue Datenbankdefinition anlegen (Basic) */ +//#define FN_QRY_SELECT (FN_INSERT + 57) /* SQL-Statement angeben (Basic) */ +//#define FN_QRY_TO_FIRST_REC (FN_INSERT + 58) /* Ersten Datensatz anwaehlen (Basic) */ +//#define FN_QRY_TO_NEXT_REC (FN_INSERT + 59) /* Naechsten Datensatz anwaehlen (Basic) */ +//#define FN_QRY_TO_REC (FN_INSERT + 60) /* Bestimmten Datensatz anwaehlen (Basic) */ +//#define FN_QRY_GET_RECORD_ID (FN_INSERT + 61) /* Datensatznummer erfragen (Basic) */ +//#define FN_QRY_GET_COLUMN_NUM (FN_INSERT + 62) /* Anzahl der Spalten (Basic) */ + +#define FN_QRY (FN_INSERT + 63) /* Datensatz einfuegen */ +#define FN_QRY_MERGE (FN_INSERT + 64) /* Datensatz einfuegen (Serienbrief) */ +#define FN_QRY_OPEN_TABLE (FN_INSERT + 65) /* Datenbank oeffnen (Basic) */ +#define FN_TOOL_ANKER_FRAME (FN_INSERT + 66) /* Draw-Objekt am Rahmen verankern */ +//#define FN_QRY_SWITCH (FN_INSERT + 67) /* Auf eine bestimmte Datenbank umschalten */ + +#define FN_INSERT_SIM (FN_INSERT + 68) /* Einfuegen StarImage */ +#define FN_INSERT_SMA (FN_INSERT + 69) /* Einfuegen StarMath */ + +#define FN_QRY_GET_COLUMN_NAME (FN_INSERT + 70) /* Anzahl der Spalten (Basic) */ +#define FN_QRY_GET_COLUMN_TYPE (FN_INSERT + 71) /* Type des Datenbankfeldes ermitteln (Basic) */ +#define FN_QRY_GET_COLUMN_TEXT (FN_INSERT + 72) /* Inhalt des aktuellen Datensatzes (Basic) */ +#define FN_QRY_DEL_DEFINED_DB (FN_INSERT + 75) /* Datenbankdefinition loeschen (Basic) */ + +#define FN_DRAWTEXT_ATTR_DLG (FN_INSERT + 76) /* DrawText positionieren */ + +#define FN_QRY_APPEND_RECORD (FN_INSERT + 77) /* Neuen Datensatz anhaengen */ +#define FN_QRY_UPDATE_RECORD (FN_INSERT + 78) /* Datensatzspalte aendern */ +#define FN_QRY_DELETE_RECORD (FN_INSERT + 79) /* Datensatz loeschen */ +#define FN_QRY_GET_PHYS_RECORD_ID (FN_INSERT + 80) /* Physikalische (absolute) Datensatznummer erfragen (Basic) */ + +#define FN_TOOL_ANKER_CHAR (FN_INSERT + 84) /* DrawObject zeichengebunden */ +#define FN_INSERT_HARDHYPHEN (FN_INSERT + 85) /* Bindestrich ohne Umbruch*/ + +#define FN_QRY_INSERT (FN_INSERT + 86) /* Datensatz-Selektion in Text einfuegen */ +#define FN_QRY_MERGE_FIELD (FN_INSERT + 87) /* Datensatz-Selektion in Felder einfuegen */ +#define FN_QRY_INSERT_FIELD (FN_INSERT + 88) /* Datenbankfeld einfuegen */ + +#define FN_INSERT_CTRL (FN_INSERT + 89) /* Werkzeugleistencontroller Einfuegen*/ +#define FN_INSERT_OBJ_CTRL (FN_INSERT + 90) /* Werkzeugleistencontroller Einfuegen/Objekt*/ +#define FN_INSERT_FIELD_CTRL (FN_INSERT + 91) /* Werkzeugleistencontroller Einfuegen/Feldbefehle*/ + +#define FN_INSERT_FLD_DATE (FN_INSERT + 92) +#define FN_INSERT_FLD_TIME (FN_INSERT + 93) +#define FN_INSERT_FLD_PGNUMBER (FN_INSERT + 94) +#define FN_INSERT_FLD_PGCOUNT (FN_INSERT + 95) +#define FN_INSERT_FLD_TOPIC (FN_INSERT + 96) +#define FN_INSERT_FLD_TITLE (FN_INSERT + 97) +#define FN_INSERT_FLD_AUTHOR (FN_INSERT + 98) +#define FN_INSERT_FOOTNOTE (FN_INSERT + 99) + +/*-------------------------------------------------------------------- + Bereich: Einfuegen (2.Teil) + --------------------------------------------------------------------*/ + +#define FN_QRY_GET_ALL_DBNAME (FN_INSERT2 + 1) /* Alle konfigurierten Datenabanknamen ermitteln */ +#define FN_QRY_GET_DBNAME_COUNT (FN_INSERT2 + 2) /* Anzahl aller konfigurierten Datenabanknamen */ +#define FN_QRY_GET_TABLE_NAME (FN_INSERT2 + 3) /* Tabellenname einer Datenbank ermitteln */ +#define FN_QRY_GET_TABLE_COUNT (FN_INSERT2 + 4) /* Anzahl aller Tabellen einer Datenbank ermitteln */ + +#define FN_INSERT_HEADER (FN_INSERT2 + 5) /* Kopfzeile im Html-mode ein/ausschalten */ +#define FN_INSERT_FOOTER (FN_INSERT2 + 6) /* Fuázeile im Html-mode ein/ausschalten */ +#define FN_SBA_BRW_UPDATE (FN_INSERT2 + 7) /* Datensaetze in Felder einfuegen */ +#define FN_SBA_BRW_INSERT (FN_INSERT2 + 8) /* Datensaetze in Text einfuegen */ +#define FN_SBA_BRW_MERGE (FN_INSERT2 + 9) /* Serienbriefdruck */ +#define FN_JAVAEDIT (FN_INSERT2 + 10) /* Scriptfeld bearbeiten */ +#define FN_INSERT_HRULER (FN_INSERT2 + 11) /* horiz. Grafiklinie einfuegen */ +#define FN_TOOL_ANKER_AT_CHAR (FN_INSERT2 + 12) /* Object zeichengebunden */ + +#define FN_INSERT_PAGEHEADER (FN_INSERT2 + 13) /* Standard Kopfzeile einfuegen */ +#define FN_INSERT_PAGEFOOTER (FN_INSERT2 + 14) /* Standard Fusszeile einfuegen */ + +#define FN_INSERT_ENDNOTE (FN_INSERT2 + 18) /* Endnote einfuegen*/ +#define FN_INSERT_COLUMN_SECTION (FN_INSERT2 + 19) /* Spaltigen Bereich einfügen */ + +#define FN_INSERT_MULTI_TOX (FN_INSERT2 + 20) /* insert any TOX */ +#define FN_INSERT_AUTH_ENTRY_DLG (FN_INSERT2 + 21) /* insert entry for table of authorities*/ + +#define FN_SECTION_APPENDNODE (FN_INSERT2 + 22) /* insert an Paragraph behind the current section*/ + +/*-------------------------------------------------------------------- + Bereich: Format + --------------------------------------------------------------------*/ + +#define FN_AUTOFORMAT_APPLY (FN_FORMAT + 1 ) /* Autoformat-Optionen anwenden */ +#define FN_AUTOFORMAT_AUTO (FN_FORMAT + 2 ) /* Autoformat waehrend der Eingabe */ +#define FN_GROW_FONT_SIZE (FN_FORMAT + 3 ) /* Groesse */ +#define FN_SHRINK_FONT_SIZE (FN_FORMAT + 4 ) /* Groesse */ +#define FN_UNDERLINE_DOUBLE (FN_FORMAT + 5 ) /* Doppelt unterstreichen */ +#define FN_AUTOFORMAT_REDLINE_APPLY (FN_FORMAT + 6 ) /* Autoformat mit Redlining anwenden */ +#define FN_SET_SUPER_SCRIPT (FN_FORMAT + 11) /* Hochstellung */ +#define FN_SET_SUB_SCRIPT (FN_FORMAT + 12) /* Tiefstellung */ + +#define FN_SET_CASEMAP (FN_FORMAT + 14) /* CaseMap */ +#define FN_SET_LANGUAGE (FN_FORMAT + 15) /* Sprache */ +#define FN_SET_KERNING (FN_FORMAT + 16) /* Kerning */ + +#define FN_INDENT_TO_TABSTOP (FN_FORMAT + 17) /* Einrueckung auf die naechste Tabpostion */ +//schon in svxids.hrc +//#define FN_SET_JUSTIFY_PARA (FN_FORMAT + 21) /* Ausrichtung Absatz */ +#define FN_FLIP_HORZ_GRAFIC (FN_FORMAT + 25) /* Spiegeln horizontal */ +#define FN_FLIP_VERT_GRAFIC (FN_FORMAT + 26) /* Spiegeln vertikal */ +#define FN_SET_LINE_SPACE (FN_FORMAT + 27) /* Zeilenabstand parametrisiert */ +#define FN_SET_ADJUST (FN_FORMAT + 28) /* Ausrichtung parametrisiert */ +#define FN_SET_LRMARGIN (FN_FORMAT + 29) /* linker/rechter Rand */ +#define FN_SET_ULMARGIN (FN_FORMAT + 30) /* oberer/unterer Rand */ +#define FN_UNINDENT_TO_TABSTOP (FN_FORMAT + 31) /* Einrueckung auf die vorgige Tabpostion */ + +#define FN_SET_HYPHEN_ZONE (FN_FORMAT + 32) /* Silbentrennung */ +#define FN_SET_KEEP_TOGETHER (FN_FORMAT + 34) /* nicht trennen */ +#define FN_SET_KEEP_WITH_NEXT (FN_FORMAT + 35) /* mit folgendem zus. */ +#define FN_SET_WIDOW (FN_FORMAT + 36) /* Widows */ +#define FN_SET_ORPHAN (FN_FORMAT + 37) /* Orphans */ + + +#define FN_REGISTER_COLLECTION (FN_FORMAT + 43) /* Referenzvorlage an der Seite */ +#define FN_REGISTER_MODE (FN_FORMAT + 44) /* Registermodus an/aus */ +#define FN_NUM_FORMAT_TABLE_DLG (FN_FORMAT + 45) /* Zahlenformat in Tabelle */ +#define FN_FORMAT_BORDER_DLG (FN_FORMAT + 48) /* Umrandung */ +#define FN_FORMAT_PAGE_COLUMN_DLG (FN_FORMAT + 49) /* Spalten pro Seite */ +#define FN_FORMAT_BACKGROUND_DLG (FN_FORMAT + 50) /* Hintergrund */ +#define FN_FORMAT_PAGE (FN_FORMAT + 51) /* Seite */ +#define FN_FORMAT_PAGE_DLG (FN_FORMAT + 52) /* Seite */ +#define FN_FORMAT_COLUMN (FN_FORMAT + 53) /* Spalten */ +#define FN_FORMAT_DROPCAPS (FN_FORMAT + 54) /* Initialien */ +#define FN_FORMAT_FRAME (FN_FORMAT + 55) /* Rahmen */ +#define FN_FORMAT_FRAME_DLG (FN_FORMAT + 56) /* Rahmen */ +#define FN_FORMAT_GRAFIC (FN_FORMAT + 57) /* Grafik */ +#define FN_FORMAT_GRAFIC_DLG (FN_FORMAT + 58) /* Grafik */ +#define FN_FORMAT_TABLE (FN_FORMAT + 59) /* Tabelle */ +#define FN_FORMAT_TABLE_DLG (FN_FORMAT + 60) /* Tabelle */ +#define FN_FORMAT_OLE_DLG (FN_FORMAT + 61) /* OLE bearbeiten */ + +#define FN_NEW_STYLE_BY_EXAMPLE (FN_FORMAT + 62) /* Vorlage erzeugen by Example */ +#define FN_UPDATE_STYLE_BY_EXAMPLE (FN_FORMAT + 63) /* Vorlage aktualisieren */ +#define FN_STYLE_SHEET_FRAME_DLG (FN_FORMAT + 64) /* Rahmenvorlage */ +#define FN_STYLE_SHEET_DOC_DLG (FN_FORMAT + 65) /* Dokumentvorlage */ +#define FN_STYLE_SHEET_GRAFIK_DLG (FN_FORMAT + 66) /* Dokumentvorlage */ +#define FN_FORMAT_FOOTNOTE (FN_FORMAT + 67) /* Fussnoten */ +#define FN_FORMAT_FOOTNOTE_DLG (FN_FORMAT + 68) /* Fussnoten-Dialog */ + +// schon im Svx definiert +//#define FN_FORMAT_RESET (FN_FORMAT + 69) /* Format zuruecksetzen */ + +#define FN_FRAME_TO_TOP (FN_FORMAT + 70) /* Rahmen nach oben */ +#define FN_FRAME_TO_BOTTOM (FN_FORMAT + 71) /* Rahmen nach unten */ + +#define FN_FRAME_NOWRAP (FN_FORMAT + 72) /* Rahmen kein Umlauf */ +#define FN_FRAME_WRAP (FN_FORMAT + 73) /* Rahmen Umlauf */ +#define FN_FRAME_WRAPTHRU (FN_FORMAT + 74) /* Rahmen Durchlauf */ + +#define FN_FRAME_ALIGN_HORZ_LEFT (FN_FORMAT + 75) /* Rahmen horz. links */ +#define FN_FRAME_ALIGN_HORZ_RIGHT (FN_FORMAT + 76) /* Rahmen horz. rechts */ +#define FN_FRAME_ALIGN_HORZ_CENTER (FN_FORMAT + 77) /* Rahmen horz. zentriert */ +#define FN_FRAME_ALIGN_VERT_TOP (FN_FORMAT + 78) /* Rahmen vert. oben */ +#define FN_FRAME_ALIGN_VERT_BOTTOM (FN_FORMAT + 79) /* Rahmen vert. unten */ +#define FN_FRAME_ALIGN_VERT_CENTER (FN_FORMAT + 80) /* Rahmen vert. zentriert */ + +#define FN_SET_FRM_POSITION (FN_FORMAT + 82)/* Rahmenposition -- " -- */ +#define FN_SET_FRM_OPTIONS (FN_FORMAT + 86)/* Rahmenoptionen -- " -- */ + +#define FN_SET_PAGE_STYLE (FN_FORMAT + 93) /* Anwenden Seitenv. */ + + +#define FN_TABLE_REP (FN_FORMAT + 99) /* TableRepresentation */ +#define FN_CONVERT_TEXT_TABLE (FN_FORMAT + 100) /* Konvertierung Text <-> Tabelle */ +#define FN_TABLE_INSERT_ROW (FN_FORMAT + 101) /* Tabelle: Zeile einfuegen */ +#define FN_TABLE_INSERT_COL (FN_FORMAT + 102) /* Tabelle: Spalte einfuegen */ +#define FN_TABLE_DELETE_ROW (FN_FORMAT + 103) /* Tabelle: Zeile loeschen */ +#define FN_TABLE_DELETE_COL (FN_FORMAT + 104) /* Tabelle: Spalte loeschen */ +#define FN_TABLE_SPLIT_CELLS (FN_FORMAT + 105) /* Tabelle: Zellen teilen */ +#define FN_TABLE_MERGE_CELLS (FN_FORMAT + 106) /* Tabelle: Zellen verbinden */ +#define FN_TABLE_SET_ROW_HEIGHT (FN_FORMAT + 107) /* Tabelle: Zeilenhoehe setzen */ +#define FN_TABLE_SET_COL_WIDTH (FN_FORMAT + 108) /* Tabelle: Spaltenbreite setzen */ +#define FN_TABLE_SET_ULSPACE (FN_FORMAT + 109) /* Tabelle: oberen / unteren Abstand einstellen */ +#define FN_OPTIMIZE_TABLE (FN_FORMAT + 110) /* ToolBoxItem fuer Optimierung in Tabellen */ +#define FN_TABLE_SET_SHADOW (FN_FORMAT + 111) /* Tabelle: Schatten einstellen */ +#define FN_TABLE_GOTO_CELL (FN_FORMAT + 112) /* Tabelle: Zelle anspringen */ +#define FN_TABLE_SELECT_ROW (FN_FORMAT + 113) /* Tabelle: Zeile selektieren */ +#define FN_TABLE_SELECT_COL (FN_FORMAT + 114) /* Tabelle: Spalte selektieren */ +#define FN_TABLE_SELECT_ALL (FN_FORMAT + 115) /* Tabelle: Tabelle selektieren */ +#define FN_TABLE_SET_READ_ONLY (FN_FORMAT + 116) /* Tabelle: Tabelle schuetzen */ +#define FN_TABLE_SET_READ_ONLY_CELLS (FN_FORMAT + 117) /* Tabelle: Tabellezellen schuetzen */ +#define FN_TABLE_UNSET_READ_ONLY_CELLS (FN_FORMAT + 119) /* Tabelle: Tabellezellen schuetzen aufheben */ +#define FN_TABLE_HEADLINE_REPEAT (FN_FORMAT + 120) /* used in SwXTextTable*/ +#define FN_TABLE_ADJUST_CELLS (FN_FORMAT + 121) /* Tabelle: Zellen anpassen */ + +#define FN_FRAME_UP (FN_FORMAT + 122) /* Rahmen um eine Ebene nach oben */ +#define FN_FRAME_DOWN (FN_FORMAT + 123) /* Rahmen um eine Ebene nach unten */ + +#define FN_TABLE_INSERT_CHART (FN_FORMAT + 124) + +#define FN_SET_FRM_LRSPACE (FN_FORMAT + 125) /* Rahmen Seitenabstand */ +#define FN_SET_FRM_ULSPACE (FN_FORMAT + 126) /* Rahmen Kopf-/Fussabstand */ +#define FN_TABLE_SET_LRSPACE (FN_FORMAT + 127) /* Tabelle: linker / rechter Abstand einstellen */ +#define FN_TABLE_OPTIMAL_HEIGHT (FN_FORMAT + 128) /* Zellenhoehe optimal*/ + +/*-------------------------------------------------------------------- + Bereich: Seitenvorlage + --------------------------------------------------------------------*/ + +#define FN_NEW_PAGE_STYLE (FN_FORMAT + 129) /* Anlegen Seitenvorlage */ +#define FN_PAGE_STYLE_SET_LR_MARGIN (FN_FORMAT + 130) /* linker / rechter Rand */ +#define FN_PAGE_STYLE_SET_UL_MARGIN (FN_FORMAT + 131) /* oberer / unterer Rand */ +#define FN_PAGE_STYLE_SET_PAGE (FN_FORMAT + 134) /* linke, rechte... */ +#define FN_PAGE_STYLE_SET_PAPER_SIZE (FN_FORMAT + 135) /* Papiergroesse */ +#define FN_PAGE_STYLE_SET_PAPER_BIN (FN_FORMAT + 136) /* Druckerschacht */ +#define FN_PAGE_STYLE_SET_NUMBER_FORMAT (FN_FORMAT + 137) /* Numerierungsart */ +#define FN_PAGE_STYLE_SET_COLS (FN_FORMAT + 138) /* Spaltenanzahl */ + + +/* OS: Diese Ids werden nur noch fuer die Hilfe benoetigt und sind fuer den + Dialog durch die Ids ohne _DLG ersetzt*/ +#define FN_TABLE_INSERT_COL_DLG (FN_FORMAT + 142) /* Tabelle: Dlg. Spalte einfuegen */ +#define FN_TABLE_INSERT_ROW_DLG (FN_FORMAT + 143) /* Tabelle: Dlg. Zeile einfuegen */ + + + +//hier geht's weiter ! +/*-------------------------------------------------------------------- + Bereich: Ribbon + --------------------------------------------------------------------*/ + +#define FN_SET_BACKGROUND_COLOR (FN_FORMAT + 150) /* Hintergrundfarbe */ + +#define FN_SET_BORDER_POS (FN_FORMAT + 152) /* Position Umrandung */ +#define FN_SET_BORDER_LINES (FN_FORMAT + 153) /* Linienart Umrandung */ +#define FN_SET_BORDER_COLOR (FN_FORMAT + 154) /* Farbe Umrandung */ + +#define FN_FORMULA_CALC (FN_FORMAT + 156) /* Formelauswahl */ +#define FN_FORMULA_CANCEL (FN_FORMAT + 157) /* Formel nicht uebernehmen */ +#define FN_FORMULA_APPLY (FN_FORMAT + 158) /* Formel uebernehmen */ + +#define FN_TABLE_UNSET_READ_ONLY (FN_FORMAT + 159) /* Zellenschutz fuer Tab. aufheben */ + +#define FN_FORMULA_POSITION (FN_FORMAT + 160) /* Positionsanzeige */ +#define FN_FORMULA_EDIT (FN_FORMAT + 161) /* Editfeld */ + + +#define FN_FRAME_WRAP_IDEAL (FN_FORMAT + 163) /* Rahmen Idealer Umlauf */ +#define FN_FRAME_WRAPTHRU_TRANSP (FN_FORMAT + 164) /* Rahmen Transparenter Durchlauf */ + +#define FN_FRAME_ALIGN_VERT_ROW_TOP (FN_FORMAT + 165) /* Rahmen vert. Zeile oben */ +#define FN_FRAME_ALIGN_VERT_ROW_BOTTOM (FN_FORMAT + 166) /* Rahmen vert. Zeile unten */ +#define FN_FRAME_ALIGN_VERT_ROW_CENTER (FN_FORMAT + 167) /* Rahmen vert. Zeile zentriert */ + +#define FN_FRAME_ALIGN_VERT_CHAR_TOP (FN_FORMAT + 168) /* Rahmen vert. Zeichen oben */ +#define FN_FRAME_ALIGN_VERT_CHAR_BOTTOM (FN_FORMAT + 169) /* Rahmen vert. Zeichen unten */ +#define FN_FRAME_ALIGN_VERT_CHAR_CENTER (FN_FORMAT + 170) /* Rahmen vert. Zeichen zentriert */ + +#define FN_TABLE_SET_DEF_BORDER (FN_FORMAT + 171) /* vordefinierte Umrandungen setzen */ + +#define FN_FRAME_WRAP_LEFT (FN_FORMAT + 172) /* Rahmen Umlauf links */ +#define FN_FRAME_WRAP_RIGHT (FN_FORMAT + 173) /* Rahmen Umlauf links */ + +#define FN_TABLE_SET_ROW_AUTOHEIGHT (FN_FORMAT + 174) /* Tabelle: Minimale automatische Zeilenhoehe setzen */ + + +#define FN_WRAP_ANCHOR_ONLY (FN_FORMAT + 181) /* Umlauf nur fuer ersten Absatz */ + +#define FN_TABLE_BALANCE_CELLS (FN_FORMAT + 182) /* Spalten gleichmaessig verteilen */ +#define FN_TABLE_BALANCE_ROWS (FN_FORMAT + 183) /* Zeilen gleichmaessig verteilen */ + +#define FN_FRAME_WRAP_CONTOUR (FN_FORMAT + 184) /* Rahmen Kunturumlauf */ + +#define FN_TABLE_VERT_NONE (FN_FORMAT + 185) /* vertikale Ausrichtung in Tabellenzellen */ +#define FN_TABLE_VERT_CENTER (FN_FORMAT + 186) /* -"- */ +#define FN_TABLE_VERT_BOTTOM (FN_FORMAT + 187) /* -"- */ +#define FN_TABLE_SET_VERT_ALIGN (FN_FORMAT + 188) /* -"- */ +#define FN_TABLE_MODE_FIX (FN_FORMAT + 189) /* Tabellenmodus */ +#define FN_TABLE_MODE_FIX_PROP (FN_FORMAT + 190) /* -"- */ +#define FN_TABLE_MODE_VARIABLE (FN_FORMAT + 191) /* -"- */ + +#define FN_TABLE_AUTOSUM (FN_FORMAT + 195) /* Autosumme*/ +#define FN_SET_CONTROL_HANDLER (FN_FORMAT + 199) /* Macro setzen */ + +#define FN_IS_IMAGE (FN_FORMAT2 + 6) /* Numerierung : mit Grafik?*/ + +#define FN_GOTO_NEXT_REGION (FN_FORMAT2 + 9) /* Naechsten Bereich anspringen */ +#define FN_GOTO_PREV_REGION (FN_FORMAT2 + 10) /* Vorherigen " */ + +#define FN_GET_SBXCONTROL (FN_FORMAT2 + 11) /* SbxObject rausreichen */ +#define FN_ABSTRACT_NEWDOC (FN_FORMAT2 + 12) /* Abstract in neuem Doc */ +#define FN_ABSTRACT_STARIMPRESS (FN_FORMAT2 + 13) /* Abstract an StarImpress */ + + + + + + + +#define FN_NUMBER_FORMAT (FN_FORMAT2 + 120) /* Boxen/NumberFormatter eistellen */ +#define FN_NUMBER_STANDARD (FN_FORMAT2 + 121) +#define FN_NUMBER_TWODEC (FN_FORMAT2 + 123) +#define FN_NUMBER_SCIENTIFIC (FN_FORMAT2 + 124) +#define FN_NUMBER_DATE (FN_FORMAT2 + 125) +#define FN_NUMBER_TIME (FN_FORMAT2 + 126) +#define FN_NUMBER_CURRENCY (FN_FORMAT2 + 127) +#define FN_NUMBER_PERCENT (FN_FORMAT2 + 128) + + + +#define FN_FRAME_CHAIN (FN_FORMAT2 + 136) +#define FN_FRAME_UNCHAIN (FN_FORMAT2 + 137) + +#define FN_NUMBER_NEWSTART (FN_FORMAT2 + 138) +#define FN_NUMBER_NEWSTART_AT (FN_FORMAT2 + 139) + +#define FN_FRAME_MIRROR_ON_EVEN_PAGES (FN_FORMAT2 + 140) +#define FN_GRAPHIC_MIRROR_ON_EVEN_PAGES (FN_FORMAT2 + 141) + +#define FN_TABLE_SPLIT_TABLE (FN_FORMAT2 + 142) +#define FN_SYNC_LABELS (FN_FORMAT2 + 143) + + +#define FN_TABLE_RELATIVE_WIDTH (FN_FORMAT2 + 147) /* Tabelle: relative Breite - UNO */ +#define FN_TABLE_WIDTH (FN_FORMAT2 + 148) /* Tabelle: Breite - UNO */ +#define FN_TABLE_IS_RELATIVE_WIDTH (FN_FORMAT2 + 149) /* Tabelle: ist Breite relativ?- UNO */ + +#define FN_INC_INDENT_OFFSET (FN_FORMAT2 + 150) +#define FN_DEC_INDENT_OFFSET (FN_FORMAT2 + 151) + +#define FN_TABLE_MERGE_TABLE (FN_FORMAT2 + 152) + +/*-------------------------------------------------------------------- + Bereich: Extras + --------------------------------------------------------------------*/ + +#define FN_LINE_NUMBERING_DLG (FN_EXTRA + 2 ) /* Zeilennumerierung */ +#define FN_THESAURUS_DLG (FN_EXTRA + 3 ) /* Thesaurus */ +#define FN_HYPHENATE_OPT_DLG (FN_EXTRA + 5 ) /* Silbentrennung */ +#define FN_ADD_UNKNOWN (FN_EXTRA + 6 ) /* Woerter lernen */ +#define FN_DICTIONARY_DLG (FN_EXTRA + 8 ) /* Woerterbuecher */ +#define FN_NUMBERING (FN_EXTRA + 9 ) /* Nummerierung/Bullets */ +#define FN_NUMBERING_DLG (FN_EXTRA + 10) /* Nummerierung/Bullets */ +#define FN_NUMBERING_OUTLINE (FN_EXTRA + 11) /* Gliederungsnumerierung */ +#define FN_NUMBERING_OUTLINE_DLG (FN_EXTRA + 12) /* Gliederungsnumerierung */ +#define FN_SORTING_DLG (FN_EXTRA + 14) /* Sortieren */ +#define FN_CALCULATE (FN_EXTRA + 15) /* Berechnen */ +#define FN_GENERATE_TOC_DLG (FN_EXTRA + 16) /* Inhaltsverzeichnis */ +#define FN_GENERATE_INDEX_DLG (FN_EXTRA + 17) /* Stichwortverzeichnis */ +#define FN_GENERATE_DIR_DLG (FN_EXTRA + 18) /* Verzeichnis */ +#define FN_GLOSSARY_DLG (FN_EXTRA + 20) /* Textbausteine */ +#define FN_MACRO_CHOOSER (FN_EXTRA + 21) /* Makro aufnehmen */ +#define FN_SPELLING_DLG (FN_EXTRA + 22) /* Rechtschreibung */ + +#define FN_PLAY_MACRO (FN_EXTRA + 23) /* Makro abspielen */ +#define FN_LAUNCH_BASIC (FN_EXTRA + 25) /* Makro abspielen */ +#define FN_EXPAND_GLOSSARY (FN_EXTRA + 28) /* Textbausteine expandieren */ +#define FN_CONFIG_TOOLBOX (FN_EXTRA + 29) /* Konfiguration Toolbox */ +#define FN_CONFIG_MENU (FN_EXTRA + 30) /* Konfiguration Menu */ +#define FN_CONFIG_KEY (FN_EXTRA + 31) /* Konfiguration Tastatur */ +#define FN_CHANGE_PAGENUM (FN_EXTRA + 34) /* Seitennummer aendern */ + +#define FN_MACRO_POPUP (FN_EXTRA + 37) /* Alle Macrofunktionen */ +#define FN_BULLET (FN_EXTRA + 38) /* Bullet-Liste */ + + +// Bereich: Gloassaries + +// schon im Svx definiert + +//#define FN_GET_GLOSSARY_GROUP_COUNT (FN_EXTRA + 42) /* Anzahl der Bausteingruppen */ + +#define FN_AUTO_CORRECT (FN_EXTRA + 49 ) /* Autocorrect aus Basic */ +#define FN_AUTO_CORRECT_DLG (FN_EXTRA + 50 ) /* Dialog Autocorrect */ + +#define FN_UPDATE_TOX (FN_EXTRA + 53) /* alle Verzeichnisse aktualisieren */ +#define FN_UPDATE_CUR_TOX (FN_EXTRA + 54) /* aktuelles Verzeichnisse aktualisieren */ +#define FN_REMOVE_CUR_TOX (FN_EXTRA + 55) /* remove the current TOX*/ + +#define FN_NAVIGATION_PI_GOTO_PAGE (FN_EXTRA + 59 ) /* Seitenanwahl aus Navi-PI */ + + +#define FN_LETTER_WIZZARD (FN_EXTRA + 60 ) +#define FN_FAX_WIZZARD (FN_EXTRA + 61 ) +#define FN_MEMO_WIZZARD (FN_EXTRA + 62 ) +#define FN_AGENDA_WIZZARD (FN_EXTRA + 63 ) + +#define FN_SET_BASIC_METRIC (FN_EXTRA + 80) /* Defaultmetrik Basic setzen */ + +#define FN_RESERVED_9 (FN_EXTRA + 86) /* Platzhalter */ +#define FN_RESERVED_8 (FN_EXTRA + 87) /* Platzhalter */ +#define FN_RESERVED_7 (FN_EXTRA + 88) /* Platzhalter */ +#define FN_RESERVED_6 (FN_EXTRA + 89) /* Platzhalter */ +#define FN_RESERVED_5 (FN_EXTRA + 90) /* Platzhalter */ +#define FN_RESERVED_4 (FN_EXTRA + 91) /* Platzhalter */ +#define FN_RESERVED_3 (FN_EXTRA + 92) /* Platzhalter */ +#define FN_RESERVED_2 (FN_EXTRA + 93) /* Platzhalter */ +#define FN_RESERVED_1 (FN_EXTRA + 94) /* Platzhalter */ + +#define FN_COLLECTION_GROUP_CNT (FN_EXTRA + 96) +#define FN_COLLECTION_GROUP_IDX (FN_EXTRA + 97) +#define FN_COLL_TYPE (FN_EXTRA + 98) /* Typ fuer GlobalDoc-Collection*/ +#define FN_COLL_ADD (FN_EXTRA + 99) + +#define FN_COLL_TITLE (FN_EXTRA2 + 1) /* Bereichsname oder Index-Title */ +#define FN_SHADOWCURSOR (FN_EXTRA2 + 4) /* Shadow Cursor ein/ausschalten */ + + +#define FN_VIEW_IN_FRAME (FN_EXTRA2 + 8) /* die View befindet sich in einem FrameDoc*/ + +#define FN_UNO_PARA_STYLE (FN_EXTRA2 + 9) // jetzt kommen diverse UNO-Ids fuer die +#define FN_UNO_PAGE_STYLE (FN_EXTRA2 + 10) // PropertyMap + +#define FN_UNO_FRAME_STYLE (FN_EXTRA2 + 12) +#define FN_UNO_NUM_START_VALUE (FN_EXTRA2 + 13) +#define FN_UNO_NUM_LEVEL (FN_EXTRA2 + 14) +#define FN_UNO_NUM_RULES (FN_EXTRA2 + 15) +#define FN_UNO_DOCUMENT_INDEX_MARK (FN_EXTRA2 + 16) +#define FN_UNO_DOCUMENT_INDEX (FN_EXTRA2 + 17) +#define FN_UNO_TEXT_FIELD (FN_EXTRA2 + 18) +#define FN_UNO_TEXT_TABLE (FN_EXTRA2 + 19) +#define FN_UNO_CELL (FN_EXTRA2 + 20) +#define FN_UNO_TEXT_FRAME (FN_EXTRA2 + 21) +#define FN_UNO_REFERENCE_MARK (FN_EXTRA2 + 22) +#define FN_UNO_TEXT_SECTION (FN_EXTRA2 + 23) +#define FN_UNO_FOOTNOTE (FN_EXTRA2 + 24) +#define FN_UNO_ENDNOTE (FN_EXTRA2 + 25) +#define FN_UNO_RANGE_COL_LABEL (FN_EXTRA2 + 26) +#define FN_UNO_RANGE_ROW_LABEL (FN_EXTRA2 + 27) +#define FN_UNO_TABLE_COLUMS (FN_EXTRA2 + 28) +#define FN_UNO_TABLE_BORDER (FN_EXTRA2 + 29) +#define FN_UNO_TABLE_COLUMN_SEPARATORS (FN_EXTRA2 + 30) +#define FN_UNO_TABLE_COLUMN_RELATIVE_SUM (FN_EXTRA2 + 31) +#define FN_UNO_TABLE_CELL_BACKGROUND (FN_EXTRA2 + 32) +#define FN_UNO_ROW_HEIGHT (FN_EXTRA2 + 33) +#define FN_UNO_ROW_AUTO_HEIGHT (FN_EXTRA2 + 34) +#define FN_UNO_HEADER (FN_EXTRA2 + 35) +#define FN_UNO_HEADER_LEFT (FN_EXTRA2 + 36) +#define FN_UNO_HEADER_RIGHT (FN_EXTRA2 + 37) +#define FN_UNO_FOOTER (FN_EXTRA2 + 38) +#define FN_UNO_FOOTER_LEFT (FN_EXTRA2 + 39) +#define FN_UNO_FOOTER_RIGHT (FN_EXTRA2 + 40) +#define FN_UNO_HEADER_BACKGROUND (FN_EXTRA2 + 41) +#define FN_UNO_HEADER_BOX (FN_EXTRA2 + 42) +#define FN_UNO_HEADER_LR_SPACE (FN_EXTRA2 + 43) +#define FN_UNO_HEADER_SHADOW (FN_EXTRA2 + 44) +#define FN_UNO_FOOTER_BACKGROUND (FN_EXTRA2 + 45) +#define FN_UNO_FOOTER_BOX (FN_EXTRA2 + 46) +#define FN_UNO_FOOTER_LR_SPACE (FN_EXTRA2 + 47) +#define FN_UNO_FOOTER_SHADOW (FN_EXTRA2 + 48) +#define FN_UNO_HEADER_BODY_DISTANCE (FN_EXTRA2 + 49) +#define FN_UNO_HEADER_IS_DYNAMIC_DISTANCE (FN_EXTRA2 + 50) +#define FN_UNO_FOOTER_BODY_DISTANCE (FN_EXTRA2 + 51) +#define FN_UNO_FOOTER_IS_DYNAMIC_DISTANCE (FN_EXTRA2 + 52) +#define FN_UNO_HEADER_SHARE_CONTENT (FN_EXTRA2 + 53) +#define FN_UNO_FOOTER_SHARE_CONTENT (FN_EXTRA2 + 54) +#define FN_UNO_HEADER_HEIGHT (FN_EXTRA2 + 55) +#define FN_UNO_FOOTER_HEIGHT (FN_EXTRA2 + 56) +#define FN_UNO_HEADER_ON (FN_EXTRA2 + 57) +#define FN_UNO_FOOTER_ON (FN_EXTRA2 + 58) +#define FN_UNO_FOLLOW_STYLE (FN_EXTRA2 + 59) + +#define FN_API_CALL (FN_EXTRA2 + 60) + +#define FN_UNO_IS_PHYSICAL (FN_EXTRA2 + 61) +#define FN_UNO_IS_AUTO_UPDATE (FN_EXTRA2 + 62) +#define FN_UNO_DISPLAY_NAME (FN_EXTRA2 + 63) + +#define FN_UNO_WRAP (FN_EXTRA2 + 64) +#define FN_UNO_ANCHOR_TYPES (FN_EXTRA2 + 65) +#define FN_UNO_PARA_CHAPTER_NUMBERING_LEVEL (FN_EXTRA2 + 66) +#define FN_UNO_PARA_CONDITIONAL_STYLE_NAME (FN_EXTRA2 + 67) + +#define FN_UNO_CATEGORY (FN_EXTRA2 + 68) +#define FN_UNO_IS_NUMBER (FN_EXTRA2 + 69) +#define FN_UNO_TEXT_WRAP (FN_EXTRA2 + 70) +#define FN_UNO_ANCHOR_TYPE (FN_EXTRA2 + 71) +/*-------------------------------------------------------------------- + Bereich: Fenster + --------------------------------------------------------------------*/ + +#define FN_SOURCEVIEW SID_SOURCEVIEW +/*-------------------------------------------------------------------- + Bereich: Hilfe + --------------------------------------------------------------------*/ + + +#define FN_LAUNCH_HELP (FN_HELP + 1) /* Hilfe */ +#define FN_SHOW_HELP_INDEX (FN_HELP + 2) /* Hilfeindex */ +#define FN_SHOW_KEYBOARD_HELP (FN_HELP + 3) /* Hilfe */ +#define FN_SHOW_HELP_MANUAL (FN_HELP + 4) /* Hilfe */ +#define FN_SHOW_UPDATE_HELP (FN_HELP + 5) /* Hilfe */ + +#define FN_BALLOON_HELP (FN_HELP + 7) /* Toggle Balloon Help */ +#define FN_HELP_POPUP (FN_HELP + 8) /* Popup Help */ + + +/*-------------------------------------------------------------------- + Bereich: Traveling & Selektion + --------------------------------------------------------------------*/ + +#define FN_CHAR_LEFT (FN_SELECTION + 1 ) /* */ +#define FN_CHAR_RIGHT (FN_SELECTION + 2 ) /* */ +#define FN_LINE_UP (FN_SELECTION + 3 ) /* */ +#define FN_LINE_DOWN (FN_SELECTION + 4 ) /* */ +#define FN_START_OF_LINE (FN_SELECTION + 5 ) /* StartOfLine */ +#define FN_END_OF_LINE (FN_SELECTION + 6 ) /* EndOfLine */ +#define FN_START_OF_DOCUMENT (FN_SELECTION + 7 ) /* StartOfDocument */ +//schon in svxids.hrc +//#define FN_END_OF_DOCUMENT (FN_SELECTION + 8 ) /* EndOfDocument */ +#define FN_START_OF_NEXT_PAGE (FN_SELECTION + 9 ) /* StartOfNextPage ??? */ +#define FN_END_OF_NEXT_PAGE (FN_SELECTION + 10) /* ??? */ +#define FN_START_OF_PREV_PAGE (FN_SELECTION + 11) /* StartOfPrevPage ??? */ +#define FN_END_OF_PREV_PAGE (FN_SELECTION + 12) /* ??? */ +#define FN_START_OF_PAGE (FN_SELECTION + 13) /* StartOfPage */ +#define FN_END_OF_PAGE (FN_SELECTION + 14) /* EndOfPage */ +#define FN_START_OF_WINDOW (FN_SELECTION + 15) /* StartOfWindow */ +#define FN_END_OF_WINDOW (FN_SELECTION + 16) /* EndOfWindow */ +#define FN_START_OF_COLUMN (FN_SELECTION + 17) /* StartOfColumn */ +#define FN_END_OF_COLUMN (FN_SELECTION + 18) /* EndOfColumn */ +#define FN_START_OF_PARA (FN_SELECTION + 19) /* StartOfPara */ +#define FN_END_OF_PARA (FN_SELECTION + 20) /* EndOfPara */ +#define FN_NEXT_WORD (FN_SELECTION + 21) /* NextWord */ +#define FN_PREV_WORD (FN_SELECTION + 22) /* PrevWord */ +#define FN_NEXT_SENT (FN_SELECTION + 23) /* NextSentence */ +#define FN_PREV_SENT (FN_SELECTION + 24) /* PrevSentence */ +#define FN_DELETE (FN_SELECTION + 25) /* Delete */ +#define FN_BACKSPACE (FN_SELECTION + 26) /* Backspace */ +#define FN_DELETE_SENT (FN_SELECTION + 27) /* DeleteToEndOfSentence */ +#define FN_DELETE_BACK_SENT (FN_SELECTION + 28) /* DeleteToStartOfSentence */ +#define FN_DELETE_WORD (FN_SELECTION + 29) /* DeleteToEndOfWord */ +#define FN_DELETE_BACK_WORD (FN_SELECTION + 30) /* DeleteToStartOfWord */ +#define FN_DELETE_LINE (FN_SELECTION + 31) /* DeleteToEndOfLine */ +#define FN_DELETE_BACK_LINE (FN_SELECTION + 32) /* DeleteToStartOfLine */ +#define FN_DELETE_PARA (FN_SELECTION + 33) /* DeleteToEndOfPara */ +#define FN_DELETE_BACK_PARA (FN_SELECTION + 34) /* DeleteToStartOfPara */ +#define FN_DELETE_WHOLE_LINE (FN_SELECTION + 35) /* DeleteLine ??? */ +#define FN_SET_INS_MODE (FN_SELECTION + 36) /* Einfuegemodus / Overwrite */ +#define FN_PAGEUP (FN_SELECTION + 37) /* PageUpWithCursor */ +#define FN_PAGEDOWN (FN_SELECTION + 38) /* PageDownWithCursor */ +#define FN_SET_ADD_MODE (FN_SELECTION + 39) /* Selektionsmodus */ +#define FN_SET_EXT_MODE (FN_SELECTION + 40) /* Selektionsmodus */ +#define FN_ESCAPE (FN_SELECTION + 41) /* Normal */ +#define FN_SHIFT_BACKSPACE (FN_SELECTION + 42) /* wie Backspace */ +#define FN_SELECT_WORD (FN_SELECTION + 43) /* Wort selektieren */ + +#define FN_GOTO_NEXT_OBJ (FN_SELECTION + 44) /* N„chstes Objekt anspringen */ +#define FN_GOTO_PREV_OBJ (FN_SELECTION + 45) /* Vorhergehendes Objekt anspringen */ + +#define FN_START_TABLE (FN_SELECTION + 47) /* an den Anfang der Tabelle */ +#define FN_END_TABLE (FN_SELECTION + 48) /* an das Ende der Tabelle */ +#define FN_NEXT_TABLE (FN_SELECTION + 49) /* zur vorhergehenden Tabelle */ +#define FN_PREV_TABLE (FN_SELECTION + 50) /* zur naechsten Tabelle */ + +#define FN_START_OF_NEXT_COLUMN (FN_SELECTION + 51) /* zum Anfang der naechsten Spalte */ +#define FN_END_OF_NEXT_COLUMN (FN_SELECTION + 52) /* zum Ende der naechsten Spalte */ +#define FN_START_OF_PREV_COLUMN (FN_SELECTION + 53) /* zum Anfang der vorhergehenden Spalte */ +#define FN_END_OF_PREV_COLUMN (FN_SELECTION + 54) /* zum Ende der vorhergehenden Spalte */ + +#define FN_FOOTNOTE_TO_ANCHOR (FN_SELECTION + 55) /* aus der Fussnote zum Anchor */ +#define FN_NEXT_FOOTNOTE (FN_SELECTION + 56) /* zur naechsten Fussnote */ +#define FN_PREV_FOOTNOTE (FN_SELECTION + 57) /* zur vorhergehenden Fussnote */ + +#define FN_CNTNT_TO_NEXT_FRAME (FN_SELECTION + 58) /* aus dem Inhalt zum naechsten Rahmen */ +#define FN_FRAME_TO_ANCHOR (FN_SELECTION + 59) /* vom Rahmen zum Anker */ + +#define FN_TO_HEADER (FN_SELECTION + 60) /* Toggle zwischen Content und Kopfzeile */ +#define FN_TO_FOOTER (FN_SELECTION + 61) /* Toggle zwischen Content und Fusszeile */ + +#define FN_IDX_MARK_TO_IDX (FN_SELECTION + 62) /* von der Verzeichnismarkierung zum Verzeichnis */ + + + + + +#define FN_PREV_PARA (FN_SELECTION + 74) +#define FN_NEXT_PARA (FN_SELECTION + 75) + +#define FN_GOTO_NEXT_MARK (FN_SELECTION + 76) /* N„chsten Platzhalter anspringen */ +#define FN_GOTO_PREV_MARK (FN_SELECTION + 77) /* Vorhergehenden Platzhalter anspringen */ + +// schon im SVX unter der gleichen Id +//#define FN_START_DOC_DIRECT (FN_SELECTION + 78) /* Direkt zum Dokanfang springen */ +//#define FN_END_DOC_DIRECT (FN_SELECTION + 79) /* Direkt zum Dokanfang springen */ + +#define FN_NEXT_TOXMARK (FN_SELECTION + 83) /* zur naechsten Verz. Markierung */ +#define FN_PREV_TOXMARK (FN_SELECTION + 84) /* zur vorherigen Verz. Markierung */ +#define FN_NEXT_TBLFML (FN_SELECTION + 85) /* zur naechsten Tabellenformel */ +#define FN_PREV_TBLFML (FN_SELECTION + 86) /* zur vorherigen Tabellenformel */ +#define FN_NEXT_TBLFML_ERR (FN_SELECTION + 87) /* zur naechsten fehl. Tabellenformel */ +#define FN_PREV_TBLFML_ERR (FN_SELECTION + 88) /* zur vorherigen fehl. Tabellenformel */ + + +/*-------------------------------------------------------------------- + QUERY-Block + --------------------------------------------------------------------*/ + + + +#define FN_IS_MODIFIED (FN_QUERY +16) /* Dokument geaendert? */ +#define FN_RESET_MODIFIED (FN_QUERY +17) /* Geaendert-Flag zuruecksetzen */ + +#define FN_GET_DOC_INFO (FN_QUERY +22) /* Wert Dokumentinfo erfragen */ +#define FN_GET_ERRNO (FN_QUERY +26) /* Error-Nummer abfragen */ +#define FN_GET_DOCMAN_PATH (FN_QUERY +27) /* Pfad zu einer Gruppe im Docmgr erfragen */ + +#define FN_TXTATR_INET (FN_QUERY +29) /* INet-Attribut */ +#define FN_EXECUTE_DRAG (FN_QUERY +30) /* D&D starten */ + +#define FN_GET_PRINT_AREA (FN_QUERY +32) /* Attribut fuer druckbaren Seitenbereich besorgen */ + + + +// #define FN_IS_START_OF_PAGE (FN_QUERY +40) /**/ +// #define FN_IS_END_OF_PAGE (FN_QUERY +41) /**/ + +#define FN_GET_PARAGRAPH (FN_QUERY +48) /* Paragraph-Object von der Textshell + an die View weiterreichen*/ +// hier ist Schluss!!! + + +/*-------------------------------------------------------------------- + Bereich: Envelope + --------------------------------------------------------------------*/ + +#define FN_ENVELOP (FN_ENVELP ) +#define FN_LABEL (FN_ENVELP + 1) +#define FN_BUSINESS_CARD (FN_ENVELP + 2) + +/*-------------------------------------------------------------------- + Bereich: Parameter + --------------------------------------------------------------------*/ + +#define FN_PARAM_TABLE_COLS (FN_PARAM) +#define FN_PARAM_TABLE_ROWS (FN_PARAM+1) + +#define FN_PARAM_SEARCH_WORDONLY (FN_PARAM+5) +#define FN_PARAM_SEARCH_EXACT (FN_PARAM+6) +#define FN_PARAM_SEARCH_REGEXP (FN_PARAM+7) +#define FN_PARAM_SEARCH_BACKWARDS (FN_PARAM+8) +#define FN_PARAM_SEARCH_FINDALL (FN_PARAM+9) +#define FN_PARAM_SEARCH_SELECTION (FN_PARAM+10) +#define FN_PARAM_SEARCH_TEXT (FN_PARAM+11) +#define FN_PARAM_SEARCH_TEXTREPLACE (FN_PARAM+12) + +#define FN_PARAM_PARADLGLIMITS (FN_PARAM+15) +#define FN_PARAM_FRMMODE (FN_PARAM+16) + +#define FN_PARAM_ADDPRINTER (FN_PARAM+18) +#define FN_PARAM_GRID (FN_PARAM+19) +#define FN_PARAM_DOCDISP (FN_PARAM+20) +#define FN_PARAM_ELEM (FN_PARAM+21) +#define FN_PARAM_SWTEST (FN_PARAM+22) + +#define FN_PARAM_FTN_INFO (FN_PARAM+23) + +#define FN_PARAM_REGION_NAME (FN_PARAM+24) +#define FN_PARAM_REGION_CONDITION (FN_PARAM+25) +#define FN_PARAM_REGION_HIDDEN (FN_PARAM+26) +#define FN_PARAM_REGION_PROTECT (FN_PARAM+27) + +#define FN_PARAM_INSERT_AFTER (FN_PARAM+29) +#define FN_PARAM_FILTER (FN_PARAM+30) +#define FN_PARAM_INDEX_NAME (FN_PARAM+31) +#define FN_PARAM_INDEX_OPTIONS (FN_PARAM+32) +#define FN_PARAM_INDEX_FORMAT (FN_PARAM+33) +#define FN_PARAM_INDEX_LEVEL (FN_PARAM+34) +#define FN_PARAM_INDEX_TEMPLATE (FN_PARAM+35) +#define FN_PARAM_INDEX_ALTSTR (FN_PARAM+36) +#define FN_PARAM_INDEX_PRIMKEY (FN_PARAM+37) +#define FN_PARAM_INDEX_SECKEY (FN_PARAM+38) +#define FN_PARAM_WIDTH (FN_PARAM+39) +#define FN_PARAM_LOCATION (FN_PARAM+40) +#define FN_PARAM_DIR (FN_PARAM+41) +#define FN_PARAM_COUNT (FN_PARAM+42) +#define FN_PARAM_COLOR (FN_PARAM+43) + +#define FN_PARAM_TABLE_NAME (FN_PARAM+44) +#define FN_PARAM_TABLE_WIDTH (FN_PARAM+45) +#define FN_PARAM_TABLE_ULSPACE (FN_PARAM+46) +#define FN_PARAM_TABLE_LRSPACE (FN_PARAM+47) +#define FN_PARAM_TABLE_SHADOW (FN_PARAM+48) +#define FN_PARAM_TABLE_ALIGN (FN_PARAM+49) +#define FN_PARAM_TABLE_HEADLINE (FN_PARAM+50) +#define FN_PARAM_TABLE_SPACE (FN_PARAM+51) +#define FN_PARAM_TABLE_COLUMNS (FN_PARAM+52) + +#define FN_PARAM_GRF_CONNECT (FN_PARAM+54) + + +#define FN_PARAM_EVENT (FN_PARAM+68) +#define FN_PARAM_URL (FN_PARAM+69) +#define FN_PARAM_GRF_REALSIZE (FN_PARAM+70) +#define FN_PARAM_GRF_DIALOG (FN_PARAM+71) +#define FN_PARAM_GRF_CLIENTMAP (FN_PARAM+74) /* ClientMap */ +#define FN_PARAM_GRF_SERVERMAP (FN_PARAM+75) /* ServerMap */ +#define FN_PARAM_GRF_TARGETFRAME (FN_PARAM+76) /* TargetFrame */ +#define FN_INET_FIELD_MACRO (FN_PARAM+77) /* Id fuer URL-Feld-Macros*/ + +#define FN_PARAM_PRINTER (FN_PARAM+78) /* Drucker* */ +#define FN_PARAM_STDFONTS (FN_PARAM+79) /* ConfigItem Standardfonts */ + +#define FN_PARAM_WRTSHELL (FN_PARAM2) /* SwWrtShell */ + +#define FN_COND_COLL (FN_PARAM2+1) /* Item fuer bed. Vorlagen */ +#define FN_PARAM_SELECTION (FN_PARAM2+2) /* selektiertes Wort fuer Format/Zeichen/Hyperlink */ + +#define FN_PARAM_ACT_NUMBER (FN_PARAM2+3) /* PointerItem die aktuelle NumRule */ +#define FN_PARAM_CHILD_LEVELS (FN_PARAM2+4) /* Werden Child-Levels benutzt ?*/ + +#define FN_PARAM_NUM_PRESET (FN_PARAM2+5) /* vorgewaehlte Numerierung*/ + +#define FN_PARAM_HEIGHT (FN_PARAM2+6) /* Param fuer Hoehe */ +#define FN_PARAM_DIST (FN_PARAM2+7) /* und Breite, wg. metrischer Umwandlung */ + +#define FN_PARAM_SHADOWCURSOR (FN_PARAM2+8) /* Fuer ShadowCursor Optionen */ + +#define FN_PARAM_ACT_NUMLEVEL (FN_PARAM2+9) /* BYTE-Item mit aktuellen NumLevel */ + +#define FN_PARAM_9 (FN_PARAM2+10) +#define FN_PARAM_10 (FN_PARAM2+11) + +#define FN_TEXT_RANGE (FN_PARAM2+12) /* TextRange Property*/ + +#define FN_PARAM_CRSR_IN_PROTECTED (FN_PARAM2+13) /* Cursor in geschuetzten Bereichen*/ +#define FN_PARAM_TOX_TYPE (FN_PARAM2+14) /* TOX type in tox dialog*/ +#define FN_PARAM_LINK_DISPLAY_NAME (FN_PARAM2+15) /* LinkDisplayName property*/ +#define FN_PARAM_NUM_LEVEL (FN_PARAM2+16) /* rtf filter*/ +/*-------------------------------------------------------------------- + Bereich: Druckoptionen + --------------------------------------------------------------------*/ + +#define FN_PRNOPT_GRAPHIC (FN_PRNOPT + 1) +#define FN_PRNOPT_TABLE (FN_PRNOPT + 2) +#define FN_PRNOPT_LEFT_PAGE (FN_PRNOPT + 3) +#define FN_PRNOPT_RIGHT_PAGE (FN_PRNOPT + 4) +#define FN_PRNOPT_REVERSE (FN_PRNOPT + 5) +#define FN_PRNOPT_PAPER_FROM_SETUP (FN_PRNOPT + 6) +#define FN_PRNOPT_POSTITS (FN_PRNOPT + 8) + +#define FN_PRNOPT_BEGIN FN_PRNOPT_GRAPHIC +#define FN_PRNOPT_END FN_PRNOPT_POSTITS + +/*-------------------------------------------------------------------- + Beschreibung: Status : nicht mehr als 19! + --------------------------------------------------------------------*/ + +#define FN_STAT_PAGE (FN_STAT + 1) +#define FN_STAT_TEMPLATE (FN_STAT + 2) +#define FN_STAT_ZOOM (FN_STAT + 3) +#define FN_STAT_INSOVER (FN_STAT + 4) +#define FN_STAT_SELMODE (FN_STAT + 5) +#define FN_STAT_HYPERLINKS (FN_STAT + 6) /* Hyperlinks ausfuehren */ +#define FN_STAT_CONTEXT (FN_STAT + 7) +#define FN_STAT_BOOKMARK (FN_STAT + 8) /* Fuer Popup Bookmarks*/ + +/*-------------------------------------------------------------------- + Bereich: Seitenvorschau + --------------------------------------------------------------------*/ + +#define FN_SHOW_TWO_PAGES (FN_PGPREVIEW + 1) +#define FN_SHOW_FOUR_PAGES (FN_PGPREVIEW + 2) +#define FN_PRINT_PAGEPREVIEW (FN_PGPREVIEW + 3) + +/*-------------------------------------------------------------------- + Bereich: Rahmenattribute + --------------------------------------------------------------------*/ + +#define FN_OPAQUE (FN_FRAME + 1) +#define FN_SET_PROTECT (FN_FRAME + 2) +#define FN_SURROUND (FN_FRAME + 3) +#define FN_VERT_ORIENT (FN_FRAME + 4) +#define FN_HORI_ORIENT (FN_FRAME + 5) +#define FN_SET_FRM_NAME (FN_FRAME + 6) +#define FN_KEEP_ASPECT_RATIO (FN_FRAME + 7) +#define FN_GRF_KEEP_ZOOM (FN_FRAME + 8) + +#define FN_IID_COL1 (FN_FRAME + 13) +#define FN_IID_COL2 (FN_FRAME + 14) +#define FN_IID_COL3 (FN_FRAME + 15) +#define FN_IID_COLLEFT (FN_FRAME + 16) +#define FN_IID_COLRIGHT (FN_FRAME + 17) + +#define FN_SET_FRM_ALT_NAME (FN_FRAME + 18) + + +//Member-Ids fuer Fill/SetVariable an Items +#define MID_STYLE 0xe0 +#define MID_PWIDTH 0xe1 +#define MID_ADJUST 0xe2 +#define MID_TDIST 0xe3 +#define MID_BDIST 0xe4 +#define MID_LINES 0xe5 +#define MID_CHARS 0xe6 +#define MID_DIST 0xe7 + +#define MID_1 0xe8 +#define MID_2 0xe9 +#define MID_3 0xea +#define MID_4 0xeb +#define MID_5 0xec +#define MID_6 0xed +#define MID_7 0xee +#define MID_8 0xef +#define MID_9 0xf0 +#define MID_A 0xf1 +#define MID_B 0xf2 +#define MID_C 0xf3 +#define MID_D 0xf4 +#define MID_E 0xf5 +#define MID_F 0xf6 +#define MID_10 0xf7 +#define MID_11 0xf8 +#define MID_12 0xf9 +#define MID_13 0xfa + +#ifndef SID_SW_DOCMAN_PATH +#define SID_SW_DOCMAN_PATH (SID_OFASLOTS_START + 6) +#endif + +// defines fuer Event-Zuweisung per Macro +#define MAC_EVENT_MOUSEOVER 0x01 // +#define MAC_EVENT_MOUSECLICK 0x02 // Hyperlink ausloesen +#define MAC_EVENT_MOUSEOUT 0x03 // +#define MAC_EVENT_OBJECT_SELECT 0x04 // Obj. selektieren +#define MAC_EVENT_KEYINPUT_ALPHA 0x05 // +#define MAC_EVENT_KEYINPUT_NOALPHA 0x06 // +#define MAC_EVENT_FRM_RESIZE 0x07 // +#define MAC_EVENT_FRM_MOVE 0x08 // +#define MAC_EVENT_IMAGE_LOAD 0x09 // +#define MAC_EVENT_IMAGE_ABORT 0x0a // +#define MAC_EVENT_IMAGE_ERROR 0x0b // + diff --git a/sw/inc/comcore.hrc b/sw/inc/comcore.hrc new file mode 100644 index 000000000000..56ee86d328fa --- /dev/null +++ b/sw/inc/comcore.hrc @@ -0,0 +1,118 @@ +/************************************************************************* + * + * $RCSfile: comcore.hrc,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:24 $ + * + * 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 _COMCORE_HRC +#define _COMCORE_HRC + +#include "rcid.hrc" + +// --------------- +// die Strings +// --------------- + +#define STR_COMCORE_READERROR (RC_COMCORE_BEGIN + 0) +#define MSG_COMCORE_ASKSEARCH (RC_COMCORE_BEGIN + 1) +#define STR_TABLE_DEFNAME (RC_COMCORE_BEGIN + 2) +#define STR_GRAPHIC_DEFNAME (RC_COMCORE_BEGIN + 3) +#define STR_OBJECT_DEFNAME (RC_COMCORE_BEGIN + 4) +#define STR_FRAME_DEFNAME (RC_COMCORE_BEGIN + 5) +#define STR_REGION_DEFNAME (RC_COMCORE_BEGIN + 6) +#define STR_COMCORE_CANT_SHOW (RC_COMCORE_BEGIN + 7) +#define RID_GRAPHIC_REPLACEBMP (RC_COMCORE_BEGIN + 8) +#define RID_GRAPHIC_ERRORBMP (RC_COMCORE_BEGIN + 9) +#define STR_NUMRULE_DEFNAME (RC_COMCORE_BEGIN + 10) +#define STR_EMPTYPAGE (RC_COMCORE_BEGIN + 11) +#define RID_SHELLRES_AUTOFMTSTRS (RC_COMCORE_BEGIN + 12) +#define STR_MULT_INTERACT_HYPH_WARN (RC_COMCORE_BEGIN + 13) +#define STR_MULT_INTERACT_SPELL_WARN (RC_COMCORE_BEGIN + 14) +#define STR_SPELL_TITLE (RC_COMCORE_BEGIN + 15) +#define STR_HYPH_TITLE (RC_COMCORE_BEGIN + 16) + + +// defines fuer die Autoformat Redline Kommentare +#define STR_AUTOFMTREDL_DEL_EMPTY_PARA 0 +#define STR_AUTOFMTREDL_USE_REPLACE 1 +#define STR_AUTOFMTREDL_CPTL_STT_WORD 2 +#define STR_AUTOFMTREDL_CPTL_STT_SENT 3 +#define STR_AUTOFMTREDL_TYPO 4 +#define STR_AUTOFMTREDL_USER_STYLE 5 +#define STR_AUTOFMTREDL_BULLET 6 +#define STR_AUTOFMTREDL_UNDER 7 +#define STR_AUTOFMTREDL_BOLD 8 +#define STR_AUTOFMTREDL_FRACTION 9 +#define STR_AUTOFMTREDL_DETECT_URL 10 +#define STR_AUTOFMTREDL_DASH 11 +#define STR_AUTOFMTREDL_ORDINAL 12 +#define STR_AUTOFMTREDL_RIGHT_MARGIN 13 +#define STR_AUTOFMTREDL_SET_TMPL_TEXT 14 +#define STR_AUTOFMTREDL_SET_TMPL_INDENT 15 +#define STR_AUTOFMTREDL_SET_TMPL_NEG_INDENT 16 +#define STR_AUTOFMTREDL_SET_TMPL_TEXT_INDENT 17 +#define STR_AUTOFMTREDL_SET_TMPL_HEADLINE 18 +#define STR_AUTOFMTREDL_SET_NUMBULET 19 +#define STR_AUTOFMTREDL_DEL_MORELINES 20 +// !!!!!!!!!!!!!!!!!!!!!!!!!! das Ende immer richtig setzen !!!!!!!!!!!! +#define STR_AUTOFMTREDL_END 21 + + +#endif + + + diff --git a/sw/inc/crsrsh.hxx b/sw/inc/crsrsh.hxx new file mode 100644 index 000000000000..523d8de73309 --- /dev/null +++ b/sw/inc/crsrsh.hxx @@ -0,0 +1,901 @@ +/************************************************************************* + * + * $RCSfile: crsrsh.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _CRSRSH_HXX +#define _CRSRSH_HXX + +#ifndef _STRING_HXX //autogen +#include <tools/string.hxx> +#endif +#ifndef _LINK_HXX //autogen +#include <tools/link.hxx> +#endif +#ifndef _RTTI_HXX //autogen +#include <tools/rtti.hxx> +#endif +#ifndef _WORDSEL_HXX //autogen +#include <svtools/wordsel.hxx> +#endif +#ifndef _COM_SUN_STAR_LINGUISTIC_XSPELLCHECKER1_HPP_ +#include <com/sun/star/linguistic/XSpellChecker1.hpp> +#endif +#ifndef _COM_SUN_STAR_LINGUISTIC_XHYPHENATOR_HPP_ +#include <com/sun/star/linguistic/XHyphenator.hpp> +#endif + +#ifndef _SWTYPES_HXX +#include <swtypes.hxx> // fuer SWPOSDOC +#endif +#ifndef _VIEWSH_HXX +#include <viewsh.hxx> // fuer ViewShell +#endif +#ifndef _CALBCK_HXX +#include <calbck.hxx> // fuer SwClient +#endif +#ifndef _CSHTYP_HXX +#include <cshtyp.hxx> // fuer die CursorShell Typen +#endif +#ifndef _CRSTATE_HXX +#include <crstate.hxx> // fuer die CursorMove-Staties +#endif +#ifndef _BKMRKE_HXX //autogen +#include <bkmrke.hxx> +#endif +#ifndef _TOXE_HXX +#include <toxe.hxx> // SwTOXSearchDir +#endif + +#if defined(PRODUCT) && !defined(WIN) +// fuer die Inline-Methoden +#ifndef _VISCRS_HXX +#include <viscrs.hxx> +#endif +#ifndef _NODE_HXX +#include <node.hxx> +#endif +#define CRSR_INLINE inline +#else +#define CRSR_INLINE +#endif + +// einige Forward Deklarationen + +class KeyCode; +class Region; +class SfxItemSet; +class SfxPoolItem; +class SpellCheck; +class SwBookmark; +class SwCntntFrm; +class SwCrsrShell; +class SwCursor; +class SwField; +class SwFieldType; +class SwFmt; +class SwFmtFld; +class SwIndex; +class SwNodeIndex; +class SwNode; +class SwNodes; +class SwPaM; +class SwSelBoxes; +class SwShellCrsr; +class SwShellTableCrsr; +class SwTableNode; +class SwTxtFmtColl; +class SwVisCrsr; +class SwTxtINetFmt; +class SwFmtINetFmt; +class SwTxtAttr; +class SwTableBox; +class SwCellFrms; +class SwTOXMark; +struct SwPosition; + +class SearchParam; +class SwRedline; + +// enum und struktur, um ueber die Doc-Position Informationen zu erfragen + +struct SwContentAtPos +{ + enum IsAttrAtPos + { + SW_NOTHING = 0x0000, + SW_FIELD = 0x0001, + SW_CLICKFIELD = 0x0002, + SW_FTN = 0x0004, + SW_INETATTR = 0x0008, + SW_TABLEBOXFML = 0x0010, + SW_REDLINE = 0x0020, + SW_OUTLINE = 0x0040, + SW_TOXMARK = 0x0080, + SW_REFMARK = 0x0100 +#ifndef PRODUCT + ,SW_CURR_ATTRS = 0x4000 // nur zum Debuggen + ,SW_TABLEBOXVALUE = 0x8000 // nur zum Debuggen +#endif + } eCntntAtPos; + + union { + const SwField* pFld; + const SfxPoolItem* pAttr; + const SwRedline* pRedl; + } aFnd; + + String sStr; + const SwTxtAttr* pFndTxtAttr; + + SwContentAtPos( int eGetAtPos = 0xffff ) + : eCntntAtPos( (IsAttrAtPos)eGetAtPos ) + { + aFnd.pFld = 0; + pFndTxtAttr = 0; + } + + // befindet sich der Node in einem geschuetzten Bereich? + FASTBOOL IsInProtectSect() const; +}; + + +// defines fuers GetCharCount +#define GETCHARCOUNT_NONE 0 +#define GETCHARCOUNT_PARA 1 +#define GETCHARCOUNT_SECTION 2 + + +// ReturnWerte von SetCrsr (werden verodert) +const int CRSR_NOERROR = 0x00, + CRSR_POSOLD = 0x01, // Cursor bleibt an alter Doc-Position + CRSR_POSCHG = 0x02; // Position vom Layout veraendert + + + + +// die Cursor - Shell +class SwCrsrShell : public ViewShell, public SwModify +{ + friend class SwCallLink; + friend class SwVisCrsr; + friend class SwSelPaintRects; + friend class SwChgLinkFlag; + + //Braucht den Crsr als IntrnlCrsr. + friend void GetTblSel( const SwCrsrShell&, SwSelBoxes& rBoxes, + const SwTblSearchType ); + friend BOOL GetAutoSumSel( const SwCrsrShell&, SwCellFrms& ); + +public: // public, damit defaultet werden kann !! + + /* ein enum fuer den Aufruf von UpdateCrsr */ + enum CrsrFlag { + UPDOWN = (1 << 0), // Up/Down auf Spalte halten + SCROLLWIN = (1 << 1), // Window Scrollen + CHKRANGE = (1 << 2), // ueberpruefen von ueberlappenden PaM's + NOCALRECT = (1 << 3), // CharRect nicht neu berechnen + READONLY = (1 << 4) // Sichtbar machen trotz Readonly + }; + +private: + + SwRect aCharRect; // Char-SRectangle auf dem der Cursor steht + Point aCrsrHeight; // Hohe&Offset von sichtbaren Cursor + Point aOldRBPos; // Right/Bottom von letzter VisArea + // (wird im Invalidate vom Cursor benutzt) + + + // um event. Macro was anhaengt auszufuehren. + Link aFlyMacroLnk; // Link will be called, if the Crsr is set + // into a fly. A macro can be then becalled + Link aChgLnk; // link will be called by every attribut/ + // format changes at cursor position. + Link aGrfArrivedLnk; // Link calls to UI if a grafik is arrived + + + SwShellCrsr* pCurCrsr; // der aktuelle Cursor + SwShellCrsr* pCrsrStk; // Stack fuer den Cursor + SwVisCrsr *pVisCrsr; // der Sichtbare-Cursor + + SwShellTableCrsr* pTblCrsr; // Tabellen-Crsr; nur in Tabellen, wenn + // die Selection ueber 2 Spalten liegt + + SwNodeIndex* pBoxIdx; // fuers erkennen der veraenderten + SwTableBox* pBoxPtr; // Tabellen-Zelle + + long nUpDownX; // versuche den Cursor bei Up/Down immer in + // der gleichen Spalte zu bewegen + long nLeftFrmPos; + ULONG nAktNode; // save CursorPos at Start-Action + xub_StrLen nAktCntnt; + USHORT nAktNdTyp; + + /* + * Mit den Methoden SttCrsrMove und EndCrsrMove wird dieser Zaehler + * Inc-/Decrementiert. Solange der Zaehler ungleich 0 ist, erfolgt + * auf den akt. Cursor kein Update. Dadurch koennen "komplizierte" + * Cursorbewegungen (ueber Find()) realisiert werden. + */ + USHORT nCrsrMove; + USHORT nBasicActionCnt; // Actions, die vom Basic geklammert wurden + CrsrMoveState eMvState; // Status fuers Crsr-Travelling - GetCrsrOfst + + BOOL bHasFocus : 1; // Shell ist in einem Window "aktiv" + BOOL bSVCrsrVis : 1; // SV-Cursor Un-/Sichtbar + BOOL bChgCallFlag : 1; // Attributaenderung innerhalb von + // Start- und EndAction + BOOL bVisPortChgd : 1; // befindet sich im VisPortChg-Aufruf + // (wird im Invalidate vom Cursor benutzt) + + BOOL bCallChgLnk : 1; // Flag fuer abgeleitete Klassen: + // TRUE -> ChgLnk callen + // Zugriff nur ueber SwChgLinkFlag + BOOL bAllProtect : 1; // Flag fuer Bereiche + // TRUE -> alles geschuetzt / versteckt + BOOL bInCMvVisportChgd : 1; // Flag fuer CrsrMoves + // TRUE -> die Sicht wurde verschoben + BOOL bGCAttr : 1; // TRUE -> es existieren nichtaufgespannte Attr. + BOOL bIgnoreReadonly : 1; // TRUE -> Beim naechsten EndAction trotz + // Readonly den Crsr sichtbar machen. + BOOL bSelTblCells : 1; // TRUE -> Zellen uebers InputWin selektieren + BOOL bAutoUpdateCells : 1; // TRUE -> Zellen werden autoformatiert + BOOL bBasicHideCrsr : 1; // TRUE -> HideCrsr vom Basic + BOOL bSetCrsrInReadOnly : 1;// TRUE -> Cursor darf in ReadOnly-Bereiche + + + void UpdateCrsr( USHORT eFlags + =SwCrsrShell::SCROLLWIN|SwCrsrShell::CHKRANGE, + BOOL bIdleEnd = FALSE ); + + void _ParkPams( SwPaM* pDelRg, SwShellCrsr** ppDelRing ); + + FASTBOOL LeftRight( BOOL, USHORT ); + FASTBOOL UpDown( BOOL, USHORT ); + FASTBOOL LRMargin( BOOL, BOOL bAPI = FALSE ); + FASTBOOL IsAtLRMargin( BOOL, BOOL bAPI = FALSE ) const; + FASTBOOL SttEndDoc( BOOL bStt ); + +typedef FASTBOOL (SwCursor:: *FNCrsr)(); + FASTBOOL CallCrsrFN( FNCrsr ); + + const SwRedline* _GotoRedline( USHORT nArrPos, BOOL bSelect ); + +protected: + + CRSR_INLINE SwMoveFnCollection* MakeFindRange( USHORT, USHORT, SwPaM* ) const; + + /* + * Compare-Methode for the StackCursor and the current Cursor. + * The Methods return -1, 0, 1 for lower, equal, greater. The enum + * CrsrCompareType says which position is compared. + */ + enum CrsrCompareType { + StackPtStackMk, + StackPtCurrPt, + StackPtCurrMk, + StackMkCurrPt, + StackMkCurrMk, + CurrPtCurrMk + }; + int CompareCursor( CrsrCompareType eType ) const; + + USHORT IncBasicAction() { return ++nBasicActionCnt; } + USHORT DecBasicAction() { return --nBasicActionCnt; } + + // Setzt alle PaMs in OldNode auf NewPos + Offset + void PaMCorrAbs(const SwNodeIndex &rOldNode, const SwPosition &rNewPos, + const xub_StrLen nOffset = 0 ); + // Setzt alle PaMs im Bereich von [StartNode, EndNode] nach NewPos + void PaMCorrAbs(const SwNodeIndex &rStartNode, const SwNodeIndex &rEndNode, + const SwPosition &rNewPos ); + +public: + TYPEINFO(); + SwCrsrShell( SwDoc *pDoc, + ::com::sun::star::uno::Reference< + ::com::sun::star::linguistic::XSpellChecker1> xSpell, + ::com::sun::star::uno::Reference< + ::com::sun::star::linguistic::XHyphenator> xHyph, + Window *pWin, SwRootFrm * = 0, const SwViewOption *pOpt = 0 ); + // verkleideter Copy-Constructor + SwCrsrShell( SwCrsrShell* pShell, Window *pWin ); + ~SwCrsrShell(); + + virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew); + + // neuen Cusror erzeugen und den alten anhaengen + SwPaM * CreateCrsr(); + // loesche den aktuellen Cursor und der folgende wird zum Aktuellen + FASTBOOL DestroyCrsr(); + // TableCursor in normale Cursor verwandeln, Tablemode aufheben + void TblCrsrToCursor(); + + SwPaM* GetCrsr( FASTBOOL bMakeTblCrsr = TRUE ) const; + CRSR_INLINE SwCursor* GetSwCrsr( FASTBOOL bMakeTblCrsr = TRUE ) const; + // nur den akt. Cursor returnen + SwShellCrsr* _GetCrsr() { return pCurCrsr; } + const SwShellCrsr* _GetCrsr() const { return pCurCrsr; } + + // uebergebenen Cursor anzeigen - fuer UNO + void SetSelection(const SwPaM& rCrsr); + + // alle Cursor aus den ContentNodes entfernen und auf 0 setzen. + // Wurde aus der FEShell hierher verschoben. + void ParkCrsr( const SwNodeIndex &rIdx ); + + // gebe den akt. Cursor-Stack zurueck. + // ( Wird in der EditShell beim Loeschen von Inhalten benoetigt! ) + CRSR_INLINE SwPaM* GetStkCrsr() const; + + // Start der Klammerung, SV-Cursor und selektierte Bereiche hiden + void StartAction(); + // Ende der Klammerung, SV-Cursor und selektierte Bereiche anzeigen + void EndAction( const BOOL bIdleEnd = FALSE ); + + USHORT GetBasicActionCnt() const { return nBasicActionCnt; } + + // Basiscursortravelling + long GetUpDownX() const { return nUpDownX; } + + FASTBOOL Left( USHORT nCnt = 1 ) { return LeftRight( TRUE, nCnt ); } + FASTBOOL Right( USHORT nCnt = 1 ) { return LeftRight( FALSE, nCnt ); } + FASTBOOL Up( USHORT nCnt = 1 ) { return UpDown( TRUE, nCnt ); } + FASTBOOL Down( USHORT nCnt = 1 ) { return UpDown( FALSE, nCnt ); } + FASTBOOL LeftMargin() { return LRMargin( TRUE ); } + FASTBOOL RightMargin(BOOL bAPI = FALSE) { return LRMargin( FALSE, bAPI ); } + FASTBOOL SttDoc() { return SttEndDoc( TRUE ); } + FASTBOOL EndDoc() { return SttEndDoc( FALSE ); } + + FASTBOOL MovePage( SwWhichPage, SwPosPage ); + FASTBOOL MovePara( SwWhichPara, SwPosPara ); + FASTBOOL MoveSection( SwWhichSection, SwPosSection ); + FASTBOOL MoveTable( SwWhichTable, SwPosTable ); + FASTBOOL MoveColumn( SwWhichColumn, SwPosColumn ); + FASTBOOL MoveRegion( SwWhichRegion, SwPosRegion ); + + // die Suchfunktionen + ULONG Find( const SearchParam& rParam, + SwDocPositions eStart, SwDocPositions eEnde, + FindRanges eRng, int bReplace = FALSE ); + + ULONG Find( const SwTxtFmtColl& rFmtColl, + SwDocPositions eStart, SwDocPositions eEnde, + FindRanges eRng, const SwTxtFmtColl* pReplFmt = 0 ); + + ULONG Find( const SfxItemSet& rSet, FASTBOOL bNoCollections, + SwDocPositions eStart, SwDocPositions eEnde, + FindRanges eRng, const SearchParam* pTextPara = 0, + const SfxItemSet* rReplSet = 0 ); + + // Positionieren des Cursors + // returnt + // CRSR_POSCHG: wenn der ob der SPoint vom Layout korrigiert wurde. + // CRSR_POSOLD: wenn der Crsr nicht veraendert wurde + int SetCrsr( const Point &rPt, BOOL bOnlyText = FALSE ); + + /* + * Benachrichtung, dass der sichtbare Bereich sich geaendert + * hat. aVisArea wird neu gesetzt, anschliessend wird + * gescrollt. Das uebergebene Rectangle liegt auf + * Pixelgrenzen, um Pixelfehler beim Scrollen zu vermeiden. + */ + virtual void VisPortChgd( const SwRect & ); + + /* + * Virtuelle PaintMethode, damit die Selection nach dem Paint wieder + * sichtbar wird. + */ + void Paint( const Rectangle & rRect ); + + // Bereiche + CRSR_INLINE void SetMark(); + CRSR_INLINE FASTBOOL HasMark(); + + void ClearMark(); + void SwapPam(); + FASTBOOL ChgCurrPam( const Point & rPt, + BOOL bTstOnly = TRUE, //Nur testen, nicht setzen + BOOL bTstHit = FALSE ); //Nur genaue Treffer + void KillPams(); + + // erzeuge eine Kopie vom Cursor und speicher diese im Stack + void Push(); + /* + * Loescht einen Cursor (gesteuert durch bOldCrsr) + * - vom Stack oder ( bOldCrsr = TRUE ) + * - den aktuellen und der auf dem Stack stehende wird zum aktuellen + * + * Return: es war auf dem Stack noch einer vorhanden + */ + FASTBOOL Pop( BOOL bOldCrsr = TRUE ); + /* + * Verbinde zwei Cursor miteinander. + * Loesche vom Stack den obersten und setzen dessen Mark im Aktuellen. + */ + void Combine(); + +#if defined( PRODUCT ) + void SttCrsrMove() { ++nCrsrMove; StartAction(); } + void EndCrsrMove( const BOOL bIdleEnd = FALSE ) + { EndAction( bIdleEnd ); --nCrsrMove; } +#else + void SttCrsrMove(); + void EndCrsrMove( const BOOL bIdleEnd = FALSE ); +#endif + + /* + * Beim Abgeben des Focuses werden die selektierten Bereiche nicht mehr + * angezeigt; andererseits beim Erhalten des Focuses, werden alle selek- + * tierten Bereiche wieder angezeigt. (Bereiche muessen neu berechnet + * werden!) + */ + BOOL HasShFcs() const { return bHasFocus; } + void ShLooseFcs(); + void ShGetFcs( BOOL bUpdate = TRUE ); + + // Methoden zum Anzeigen bzw. Verstecken des sichtbaren Text-Cursors + void ShowCrsr(); + void HideCrsr(); + // Methoden zum Anzeigen bzw. Verstecken der selektierten Bereiche mit + // dem sichtbaren Cursor + void ShowCrsrs( BOOL bCrsrVis ); + void HideCrsrs(); + // Methoden zum Anzeigen bzw. Verstecken der selektierten Bereiche mit + // dem sichtbaren Cursor + void BasicShowCrsrs() + { bBasicHideCrsr = FALSE; bSVCrsrVis = TRUE; ShowCrsrs(TRUE); } + void BasicHideCrsrs() + { HideCrsrs(); bBasicHideCrsr = TRUE; bSVCrsrVis = FALSE; } + FASTBOOL IsBasicHideCrsr() const { return bBasicHideCrsr; } + + // gebe den aktuellen Frame, in dem der Cursor steht, zurueck + SwCntntFrm *GetCurrFrm( const BOOL bCalcFrm = TRUE ) const; + + //TRUE wenn der Crsr wenn der Crsr wegen Readonly gehidet ist, + //FALSE wenn der arbeitet (trotz Readonly). + FASTBOOL IsCrsrReadonly() const; + // Cursor steht in etwas geschuetztem oder in die Selektion umspannt + // etwas geschuetztes. + FASTBOOL HasReadonlySel() const; + // darf der Cursor in ReadOnlyBereiche? + FASTBOOL IsReadOnlyAvailable() const { return bSetCrsrInReadOnly; } + void SetReadOnlyAvailable( BOOL bFlag ); + FASTBOOL IsOverReadOnlyPos( const Point& rPt ) const; + + // Methoden fuer aFlyMacroLnk + void SetFlyMacroLnk( const Link& rLnk ) { aFlyMacroLnk = rLnk; } + const Link& GetFlyMacroLnk() const { return aFlyMacroLnk; } + + // Methoden geben/aendern den Link fuer die Attribut/Format-Aenderungen + void SetChgLnk( const Link &rLnk ) { aChgLnk = rLnk; } + const Link& GetChgLnk() const { return aChgLnk; } + + // Methoden geben/aendern den Link fuers "Grafik vollstaendig geladen" + void SetGrfArrivedLnk( const Link &rLnk ) { aGrfArrivedLnk = rLnk; } + const Link& GetGrfArrivedLnk() const { return aGrfArrivedLnk; } + + //ChgLink callen, innerhalb einer Action wird der Ruf verzoegert. + void CallChgLnk(); + + // Abfrage, ob der aktuelle Cursor eine Selektion aufspannt, + // also, ob Mark gesetzt und SPoint und Mark unterschiedlich sind. + FASTBOOL HasSelection(); + + // Abfrage, ob ueberhaupt eine Selektion existiert, sprich der akt. Cursor + // aufgespannt oder nicht der einzigste ist. + CRSR_INLINE FASTBOOL IsSelection() const; + + // Abfrage, ob ein kompletter Absatz selektiert wurde + FASTBOOL IsSelFullPara() const; + // Abfrage, ob die Selektion in einem Absatz ist + CRSR_INLINE FASTBOOL IsSelOnePara() const; + + //Sollte fuer das Clipboard der WaitPtr geschaltet werden. + FASTBOOL ShouldWait() const; + + /* + * liefert das SRectangle, auf dem der Cursor steht. + */ + const SwRect &GetCharRect() const { return aCharRect; } + /* + * liefert zurueck, ob der Cursor sich ganz oder teilweise im + * sichtbaren Bereich befindet. + */ + FASTBOOL IsCrsrVisible() const { return VisArea().IsOver( GetCharRect() ); } + + // gebe die aktuelle Seitennummer zurueck: + // TRUE: in der der Cursor steht + // FALSE: die am oberen Rand sichtbar ist + void GetPageNum( USHORT &rnPhyNum, USHORT &rnVirtNum, + BOOL bAtCrsrPos = TRUE, const BOOL bCalcFrm = TRUE ); + // bestimme in welche Richtung "leere Seiten" behandelt werden! + // (wird benutzt im PhyPage.. ) + USHORT GetNextPrevPageNum( BOOL bNext = TRUE ); + + // setze den Cursor auf die Seite "nPage" an den Anfang + FASTBOOL GotoPage( USHORT nPage ); + + // gebe alle Dokumentseiten zurueck + USHORT GetPageCnt(); + + // Gehe zur naechsten Selection + FASTBOOL GoNextCrsr(); + // gehe zur vorherigen Selection + FASTBOOL GoPrevCrsr(); + + // am CurCrsr.SPoint + FASTBOOL SetBookmark( const KeyCode&, const String& rName, + const String& rShortName, BOOKMARK_TYPE eMark = BOOKMARK ); + FASTBOOL GotoBookmark( USHORT ); // setzt CurCrsr.SPoint + FASTBOOL GotoBookmark( USHORT nPos, BOOL bAtStart ); // + FASTBOOL GoNextBookmark(); // TRUE, wenn's noch eine gab + FASTBOOL GoPrevBookmark(); + USHORT GetBookmarkCnt(BOOL bBkmrk = FALSE) const; + SwBookmark& GetBookmark( USHORT, BOOL bBkmrk = FALSE ); + void DelBookmark( USHORT ); + void DelBookmark( const String& rName ); + USHORT FindBookmark( const String& rName ); + // erzeugt einen eindeutigen Namen. Der Name selbst muss vorgegeben + // werden, es wird dann bei gleichen Namen nur durchnumeriert. + void MakeUniqueBookmarkName( String& rNm ); + + // aktualisiere den Crsrs, d.H. setze ihn wieder in den Content. + // Das sollte nur aufgerufen werden, wenn der Cursor z.B. beim + // Loeschen von Rahmen irgendwohin gesetzt wurde. Die Position + // ergibt sich aus seiner aktuellen Position im Layout !! + void UpdateCrsrPos(); + + // returne den am akt. Cursor selektierten Text. Dieser wird mit + // Felder etc. aufgefuellt!! + String GetSelTxt() const; + // gebe nur den Text ab der akt. Cursor Position zurueck (bis zum NodeEnde) + String GetText() const; + // retrurne die Anzahl der selektierten Zeichen. + // Falls keine Selektion vorliegt entscheided nType was selektiert wird + // bIntrnlChar besagt ob interne Zeichen erhalten bleiben (TRUE) oder + // ob sie expandiert werden (z.B Felder/...) + ULONG GetCharCount( USHORT nType, BOOL bIntrnlChrs = TRUE ) const; + + // pruefe ob vom aktuellen Crsr der SPoint/Mark in einer Tabelle stehen + CRSR_INLINE const SwTableNode* IsCrsrInTbl( BOOL bIsPtInTbl = TRUE ) const; + // erfrage die Document - Layout - Position vom akt. Crsr + CRSR_INLINE Point& GetCrsrDocPos( BOOL bPoint = TRUE ) const; + CRSR_INLINE FASTBOOL IsCrsrPtAtEnd() const; + + CRSR_INLINE const SwPaM* GetTblCrs() const; + CRSR_INLINE SwPaM* GetTblCrs(); + + FASTBOOL IsTblComplex() const; + FASTBOOL IsTblComplexForChart() const; + // erfrage die akt. TabellenSelektion als Text + String GetBoxNms() const; + + // setze Crsr in die naechsten/vorherigen Celle + FASTBOOL GoNextCell( BOOL bAppendLine = TRUE ); + FASTBOOL GoPrevCell(); + // gehe zu dieser Box (wenn vorhanden und in Tabelle!) + FASTBOOL GotoTblBox( const String& rName ); + FASTBOOL GotoTable( const String& rName ); + + // selectiere diese Zeile/Spalte + FASTBOOL SelTblRow(); + FASTBOOL SelTblCol(); + + // zum naechsten/vorhergehenden Punkt auf gleicher Ebene + FASTBOOL GotoNextNum(); + FASTBOOL GotoPrevNum(); + + // zu diesem Gliederungspunkt + FASTBOOL GotoOutline( const String& rName ); + // zum naechsten/vorhergehenden oder angegebenen OultineNode + void GotoOutline( USHORT nIdx ); + // suche die "Outline-Position" im Nodes-Array vom akt. Kaiptel + USHORT GetOutlinePos( BYTE nLevel = UCHAR_MAX ); + // selektiere den angeben Bereich von OutlineNodes. Optional + // inclusive der Childs. Die USHORT sind die Positionen im + // OutlineNds-Array!! (EditShell) + FASTBOOL MakeOutlineSel( USHORT nSttPos, USHORT nEndPos, + BOOL bWithChilds = FALSE ); + + FASTBOOL GotoNextOutline(); // naechster Node mit Outline-Num. + FASTBOOL GotoPrevOutline(); // vorheriger Node mit Outline-Num. + + // ist der Crsr in einer Tabelle und ist die Selection ueber + // zwei Spalten + FASTBOOL IsTableMode() const { return 0 != pTblCrsr; } + + // erfrage den Tabellen Crsr; ausserhalb von Tabellen immer 0 + const SwShellTableCrsr* GetTableCrsr() const { return pTblCrsr; } + SwShellTableCrsr* GetTableCrsr() { return pTblCrsr; } + USHORT UpdateTblSelBoxes(); + + FASTBOOL GotoFtnTxt(); // springe aus dem Content zur Fussnote + FASTBOOL GotoFtnAnchor(); // springe aus der Fussnote zum Anker + FASTBOOL GotoNextFtnAnchor(); + FASTBOOL GotoPrevFtnAnchor(); + FASTBOOL GotoNextFtnCntnt(); + FASTBOOL GotoPrevFtnCntnt(); + + FASTBOOL GotoFlyTxt(); // springe aus dem Content zum "naechsten" Rahmen + FASTBOOL GotoFlyAnchor(); // springe aus dem Rahmen zum Anker + FASTBOOL GotoHeaderTxt(); // springe aus dem Content zum Header + FASTBOOL GotoFooterTxt(); // springe aus dem Content zum Footer + // springe in den Header/Footer des angegebenen oder akt. PageDesc + FASTBOOL SetCrsrInHdFt( USHORT nDescNo = USHRT_MAX, + FASTBOOL bInHeader = TRUE ); + // is point of cursor in header/footer. pbInHeader return TRUE if it is + // in a headerframe otherwise in a footerframe + FASTBOOL IsInHeaderFooter( FASTBOOL* pbInHeader = 0 ) const; + + // springe zum naechsten Verzeichnis [mit dem Namen] + FASTBOOL GotoNextTOXBase( const String* = 0 ); + // springe zum vorherigen Verzeichnis [mit dem Namen] + FASTBOOL GotoPrevTOXBase( const String* = 0 ); + FASTBOOL GotoTOXMarkBase(); // springe zum Verzeichnis vom TOXMark + // springe zum naechsten (vorherigen) Verzeichniseintrag + FASTBOOL GotoNxtPrvTOXMark( BOOL bNext = TRUE ); + // Zur naechsten/ vorherigen Verzeichnismarke dieses Typs traveln + const SwTOXMark& GotoTOXMark( const SwTOXMark& rStart, SwTOXSearch eDir ); + + // springe zum naechsten (vorherigen) Tabellenformel + // optional auch nur zu kaputten Formeln springen + FASTBOOL GotoNxtPrvTblFormula( BOOL bNext = TRUE, + BOOL bOnlyErrors = FALSE ); + + // springe zu dieser Refmark + FASTBOOL GotoRefMark( const String& rRefMark, USHORT nSubType = 0, + USHORT nSeqNo = 0 ); + + // hole vom Start/Ende der akt. Selection das nte Zeichen + sal_Unicode GetChar( BOOL bEnd = TRUE, long nOffset = 0 ); + // erweiter die akt. Selection am Anfang/Ende um n Zeichen + FASTBOOL ExtendSelection( BOOL bEnd = TRUE, xub_StrLen nCount = 1 ); + // setze nur den sichtbaren Cursor an die angegebene Dokument-Pos. + // returnt FALSE: wenn der ob der SPoint vom Layout korrigiert wurde. + // (wird zum Anzeigen von Drag&Drop/Copy-Cursor benoetigt) + FASTBOOL SetVisCrsr( const Point &rPt ); + CRSR_INLINE void UnSetVisCrsr(); + + // springe zum nachsten/vorherigen Feld des entsprechenden Types + FASTBOOL MoveFldType( const SwFieldType* pFldType, BOOL bNext, + USHORT nSubType = USHRT_MAX, + USHORT nResType = USHRT_MAX ); + // springe genau zu diesem Feld + FASTBOOL GotoFld( const SwFmtFld& rFld ); + + // returne die Anzahl der Cursor im Ring (Flag besagt ob man nur + // aufgepspannte haben will - sprich etwas selektiert ist (Basic)) + USHORT GetCrsrCnt( BOOL bAll = TRUE ) const; + + // Char Travelling - Methoden (in crstrvl1.cxx) + FASTBOOL IsStartWord()const; + FASTBOOL IsEndWord() const; + FASTBOOL IsInWord() const; + FASTBOOL GoStartWord(); + FASTBOOL GoEndWord(); + FASTBOOL GoNextWord(); + FASTBOOL GoPrevWord(); + FASTBOOL GoNextSentence(); + FASTBOOL GoPrevSentence(); + FASTBOOL SelectWord( const Point* pPt = 0 ); + + // Abfrage vom CrsrTravelling Status + CrsrMoveState GetMoveState() const { return eMvState; } + + // Position vom akt. Cursor erfragen + FASTBOOL IsStartOfDoc() const; + FASTBOOL IsEndOfDoc() const; + FASTBOOL IsSttPara() const; + FASTBOOL IsEndPara() const; + FASTBOOL IsAtLeftMargin() const { return IsAtLRMargin( TRUE ); } + FASTBOOL IsAtRightMargin(BOOL bAPI = FALSE) const { return IsAtLRMargin( FALSE, bAPI ); } + + // loesche alle erzeugten Crsr, setze den Tabellen-Crsr und den letzten + // Cursor auf seinen TextNode (oder StartNode?). + // Beim naechsten ::GetCrsr werden sie wieder alle erzeugt. + // Wird fuers Drag&Drop/ClipBorad-Paste in Tabellen benoetigt. + FASTBOOL ParkTblCrsr(); + + // erfrage die selektierte "Region" aller Cursor (fuer D&D auf Mac) + Region GetCrsrRegion() const; + + // gibt es nicht aufgespannte Attribute? + FASTBOOL IsGCAttr() const { return bGCAttr; } + void ClearGCAttr() { bGCAttr = FALSE; } + void UpdateAttr() { bGCAttr = TRUE; } + + // ist das gesamte Dokument geschuetzt/versteckt?? (fuer UI,..) + FASTBOOL IsAllProtect() const { return bAllProtect; } + +#ifdef SW_CRSR_TIMER + // setze das Flag am VisCrsr, ob dieser ueber Timer getriggert (TRUE) + // oder direkt (FALSE) angezeigt wird. (default ist Timer getriggert) + FASTBOOL ChgCrsrTimerFlag( BOOL bTimerOn = TRUE ); +#endif + + // steht der Curor auf einem "Symbol"-Zeichen + FASTBOOL IsInSymbolFont() const; + + BOOL BasicActionPend() const { return nBasicActionCnt != nStartAction; } + + // springe zum benannten Bereich + FASTBOOL GotoRegion( const String& rName ); + + // zeige die aktuelle Selektion an + virtual void MakeSelVisible(); + + // setzte den Cursor auf einen NICHT geschuetzten/versteckten Node + FASTBOOL FindValidCntntNode( BOOL bOnlyText = FALSE ); + + FASTBOOL GetContentAtPos( const Point& rPt, + SwContentAtPos& rCntntAtPos, + FASTBOOL bSetCrsr = FALSE, + SwRect* pFldRect = 0 ); + + // Attribut selelktieren + FASTBOOL SelectTxtAttr( USHORT nWhich, BOOL bExpand = FALSE, + const SwTxtAttr* pAttr = 0 ); + FASTBOOL GotoINetAttr( const SwTxtINetFmt& rAttr ); + const SwFmtINetFmt* FindINetAttr( const String& rName ) const; + + FASTBOOL CheckTblBoxCntnt( const SwPosition* pPos = 0 ); + void SaveTblBoxCntnt( const SwPosition* pPos = 0 ); + void ClearTblBoxCntnt(); + FASTBOOL EndAllTblBoxEdit(); + + // wird gerufen, wenn eine Tabellenselektion im UpdateCrsr erzeugt wird, + // ohne das die UI davon etaws weiss + virtual void NewCoreSelection(); + + void SetSelTblCells( BOOL bFlag ) { bSelTblCells = bFlag; } + BOOL IsSelTblCells() const { return bSelTblCells; } + + BOOL IsAutoUpdateCells() const { return bAutoUpdateCells; } + void SetAutoUpdateCells( BOOL bFlag ) { bAutoUpdateCells = bFlag; } + + FASTBOOL GetShadowCrsrPos( const Point& rPt, SwFillMode eFillMode, + SwRect& rRect, SwHoriOrient& rOrient ); + FASTBOOL SetShadowCrsrPos( const Point& rPt, SwFillMode eFillMode ); + + const SwRedline* SelNextRedline(); + const SwRedline* SelPrevRedline(); + const SwRedline* GotoRedline( USHORT nArrPos, BOOL bSelect = FALSE ); +}; + + +class SwChgLinkFlag +{ + BOOL bOldFlag; + SwCrsrShell& rCrsrShell; + long nLeftFrmPos; +public: + SwChgLinkFlag( SwCrsrShell& rShell ); + ~SwChgLinkFlag(); +}; + + + +// Cursor Inlines: + +#if defined(PRODUCT) && !defined(WIN) + +inline SwMoveFnCollection* SwCrsrShell::MakeFindRange( + USHORT nStt, USHORT nEnd, SwPaM* pPam ) const +{ + return pCurCrsr->MakeFindRange( (SwDocPositions)nStt, (SwDocPositions)nEnd, pPam ); +} + +inline SwCursor* SwCrsrShell::GetSwCrsr( FASTBOOL bMakeTblCrsr ) const +{ + return (SwCursor*)GetCrsr( bMakeTblCrsr ); +} + +inline SwPaM* SwCrsrShell::GetStkCrsr() const { return pCrsrStk; } + +inline void SwCrsrShell::SetMark() { pCurCrsr->SetMark(); } + +inline FASTBOOL SwCrsrShell::HasMark() { return( pCurCrsr->HasMark() ); } + +inline FASTBOOL SwCrsrShell::IsSelection() const +{ + return IsTableMode() || pCurCrsr->HasMark() || + pCurCrsr->GetNext() != pCurCrsr; +} + +inline FASTBOOL SwCrsrShell::IsSelOnePara() const +{ + return pCurCrsr == pCurCrsr->GetNext() && + pCurCrsr->GetPoint()->nNode == pCurCrsr->GetMark()->nNode; +} + +inline const SwTableNode* SwCrsrShell::IsCrsrInTbl( BOOL bIsPtInTbl ) const +{ + return pCurCrsr->GetNode( bIsPtInTbl )->FindTableNode(); +} + +inline FASTBOOL SwCrsrShell::IsCrsrPtAtEnd() const +{ + return pCurCrsr->End() == pCurCrsr->GetPoint(); +} + +inline Point& SwCrsrShell::GetCrsrDocPos( BOOL bPoint ) const +{ + return bPoint ? pCurCrsr->GetPtPos() : pCurCrsr->GetMkPos(); +} + +inline const SwPaM* SwCrsrShell::GetTblCrs() const +{ + return pTblCrsr; +} + +inline SwPaM* SwCrsrShell::GetTblCrs() +{ + return pTblCrsr; +} + +inline void SwCrsrShell::UnSetVisCrsr() +{ + pVisCrsr->Hide(); + pVisCrsr->SetDragCrsr( FALSE ); +} + +#endif + + +#endif // _CRSRSH_HXX diff --git a/sw/inc/crstate.hxx b/sw/inc/crstate.hxx new file mode 100644 index 000000000000..e712b0c12278 --- /dev/null +++ b/sw/inc/crstate.hxx @@ -0,0 +1,156 @@ +/************************************************************************* + * + * $RCSfile: crstate.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _CRSTATE_HXX +#define _CRSTATE_HXX + +#ifndef _GEN_HXX //autogen +#include <tools/gen.hxx> +#endif + +#ifndef _SWTYPES_HXX +#include <swtypes.hxx> +#endif +#ifndef _SWRECT_HXX +#include <swrect.hxx> +#endif + +enum SwFillMode +{ + FILL_TAB, // default, Auffuellen mit Tabulatoren + FILL_SPACE, // ... mit Tabulatoren und Spaces + FILL_MARGIN, // nur links, zentriert, rechts Ausrichten + FILL_INDENT // durch linken Absatzeinzug +}; + +struct SwFillCrsrPos +{ + SwRect aCrsr; // Position und Groesse des Shadowcursors + USHORT nParaCnt; // Anzahl der einzufuegenden Absaetze + USHORT nTabCnt; // Anzahl der Tabs bzw. Groesse des Einzugs + USHORT nSpaceCnt; // Anzahl der einzufuegenden Leerzeichen + USHORT nColumnCnt; // Anzahl der notwendigen Spaltenumbrueche + SwHoriOrient eOrient; // Absatzausrichtung + SwFillMode eMode; // Gewuenschte Auffuellregel + SwFillCrsrPos( SwFillMode eMd = FILL_TAB ) : + nParaCnt( 0 ), nTabCnt( 0 ), nSpaceCnt( 0 ), nColumnCnt( 0 ), + eOrient( HORI_NONE ), eMode( eMd ) + {} +}; + +// CrsrTravelling-Staties (fuer GetCrsrOfst) +enum CrsrMoveState +{ + MV_NONE, // default + MV_UPDOWN, // Crsr Up/Down + MV_RIGHTMARGIN, // an rechten Rand + MV_LEFTMARGIN, // an linken Rand + MV_SETONLYTEXT, // mit dem Cursr nur im Text bleiben + MV_TBLSEL // nicht in wiederholte Headlines +}; + +// struct fuer spaetere Erweiterungen +struct SwCrsrMoveState +{ + SwFillCrsrPos *pFill; // fuer das automatische Auffuellen mit Tabs etc. + Point aRealHeight; // enthaelt dann die Position/Hoehe des Cursors + CrsrMoveState eState; + BOOL bStop :1; + BOOL bRealHeight :1; // Soll die reale Hoehe berechnet werden? + BOOL bFieldInfo :1; // Sollen Felder erkannt werden? + BOOL bPosCorr :1; // Point musste korrigiert werden + BOOL bFtnNoInfo :1; // Fussnotennumerierung erkannt + BOOL bExactOnly :1; // GetCrsrOfst nur nach Exakten Treffern + // suchen lassen, sprich niemals in das + // GetCntntPos laufen. + BOOL bFillRet :1; // wird nur im FillModus temp. genutzt + BOOL bSetInReadOnly :1; // ReadOnlyBereiche duerfen betreten werden + BOOL bDropIt :1; // dropportions allowed + + SwCrsrMoveState( CrsrMoveState eSt = MV_NONE ) : + pFill( NULL ), + eState( eSt ), + bStop( FALSE ), + bRealHeight( FALSE ), + bFieldInfo( FALSE ), + bPosCorr( FALSE ), + bFtnNoInfo( FALSE ), + bExactOnly( FALSE ), + bSetInReadOnly( FALSE ), + bDropIt( FALSE ) + {} + SwCrsrMoveState( SwFillCrsrPos *pInitFill ) : + pFill( pInitFill ), + eState( MV_SETONLYTEXT ), + bStop( FALSE ), + bRealHeight( FALSE ), + bFieldInfo( FALSE ), + bPosCorr( FALSE ), + bFtnNoInfo( FALSE ), + bExactOnly( FALSE ), + bSetInReadOnly( FALSE ), + bDropIt( FALSE ) + {} +}; + + +#endif + + diff --git a/sw/inc/cshtyp.hxx b/sw/inc/cshtyp.hxx new file mode 100644 index 000000000000..269673eaa656 --- /dev/null +++ b/sw/inc/cshtyp.hxx @@ -0,0 +1,147 @@ +/************************************************************************* + * + * $RCSfile: cshtyp.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _CSHTYP_HXX +#define _CSHTYP_HXX + +#ifndef _SOLAR_H +#include <tools/solar.h> +#endif + +class UniString; +class SwPaM; +class SwCntntFrm; +class SwLayoutFrm; + +// eine Struktur fuer den SwPaM. In dieser stehen die Methoden-Pointer +// fuer das richtungsabhaengige Bewegen des Cursors. +struct SwMoveFnCollection; +typedef SwMoveFnCollection* SwMoveFn; + + +// Type-Definition fuer die CrsrShell +// Richtungsparameter fuer MovePage ( wird in SwCntntFrm initialisiert ) +typedef SwLayoutFrm * (*SwWhichPage)( const SwLayoutFrm * ); +typedef SwCntntFrm * (*SwPosPage)( const SwLayoutFrm * ); +extern SwWhichPage fnPagePrev, fnPageCurr, fnPageNext; +extern SwPosPage fnPageStart, fnPageEnd; + +// Richtungsparameter fuer MovePara ( wird in SwPaM initialisiert ) +typedef SwMoveFnCollection* SwPosPara; +typedef FASTBOOL (*SwWhichPara)( SwPaM&, SwPosPara ); +extern SwWhichPara fnParaPrev, fnParaCurr, fnParaNext; +extern SwPosPara fnParaStart, fnParaEnd; + +// Richtungsparameter fuer MoveSection +typedef SwMoveFnCollection* SwPosSection; +typedef FASTBOOL (*SwWhichSection)( SwPaM&, SwPosSection ); +extern SwWhichSection fnSectionPrev, fnSectionCurr, fnSectionNext; +extern SwPosSection fnSectionStart, fnSectionEnd; + +// Richtungsparameter fuer MoveTable +typedef SwMoveFnCollection* SwPosTable; +typedef FASTBOOL (*SwWhichTable)( SwPaM&, SwPosTable, FASTBOOL bInReadOnly ); +extern SwWhichTable fnTablePrev, fnTableCurr, fnTableNext; +extern SwPosTable fnTableStart, fnTableEnd; + +// Richtungsparameter fuer MoveColumn +typedef SwLayoutFrm * (*SwWhichColumn)( const SwLayoutFrm * ); +typedef SwCntntFrm * (*SwPosColumn)( const SwLayoutFrm * ); +extern SwWhichColumn fnColumnPrev, fnColumnCurr, fnColumnNext; +extern SwPosColumn fnColumnStart, fnColumnEnd; + +// Richtungsparameter fuer MoveRegion (Bereiche!) +typedef SwMoveFnCollection* SwPosRegion; +typedef FASTBOOL (*SwWhichRegion)( SwPaM&, SwPosRegion, FASTBOOL bInReadOnly ); +extern SwWhichRegion fnRegionPrev, fnRegionCurr, fnRegionNext, fnRegionCurrAndSkip; +extern SwPosRegion fnRegionStart, fnRegionEnd; + + + +/* + * folgende Kombinationen sind erlaubt: + * - suche einen im Body: -> FND_IN_BODY + * - suche alle im Body: -> FND_IN_BODYONLY | FND_IN_SELALL + * - suche in Selectionen: einen / alle -> FND_IN_SEL [ | FND_IN_SELALL ] + * - suche im nicht Body: einen / alle -> FND_IN_OTHER [ | FND_IN_SELALL ] + * - suche ueberall alle: -> FND_IN_SELALL + */ +enum FindRanges +{ + FND_IN_BODY = 0x00, // suche "eins" mur im Body-Text + FND_IN_OTHER = 0x02, // suche "alles" in Footer/Header/Fly... + FND_IN_SEL = 0x04, // suche in Selectionen + FND_IN_BODYONLY = 0x08, // suche nur im Body - nur in Verbindung mit + // FND_IN_SELALL !!! + FND_IN_SELALL = 0x01 // - alle ( nur im nicht Body und Selectionen) +}; + + +enum SwDocPositions +{ + DOCPOS_START, + DOCPOS_CURR, + DOCPOS_END, + DOCPOS_OTHERSTART, + DOCPOS_OTHEREND +}; + + +#endif // _CSHTYP_HXX diff --git a/sw/inc/dbfld.hxx b/sw/inc/dbfld.hxx new file mode 100644 index 000000000000..c6fca4ada324 --- /dev/null +++ b/sw/inc/dbfld.hxx @@ -0,0 +1,366 @@ +/************************************************************************* + * + * $RCSfile: dbfld.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _DBFLD_HXX +#define _DBFLD_HXX + +#include "fldbas.hxx" + +class SwDoc; +class SwTxtFld; +class SwFrm; + +/*-------------------------------------------------------------------- + Beschreibung: Datenbankfeld + --------------------------------------------------------------------*/ + +class SwDBFieldType : public SwValueFieldType +{ + String aName; // Syntax: Datenbankname.Feldname + long nRefCnt; + +public: + + SwDBFieldType(SwDoc* pDocPtr, const String& Name, const String& rSymDBName); + + virtual const String& GetName() const; + virtual SwFieldType* Copy() const; + + inline void AddRef() { nRefCnt++; } + void ReleaseRef(); + inline long GetRefCount() { return nRefCnt; } + + String GetColumnName(); + String GetDBName(); + + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +/*-------------------------------------------------------------------- + Beschreibung: + von SwFields abgeleitete Klassen. Sie ueberlagern die Expand-Funktion. + Der Inhalt wird entsprechend dem Format, soweit vorhanden, formatiert. + --------------------------------------------------------------------*/ + +class SwDBField : public SwValueField +{ + String aContent; + USHORT nSubType; + BOOL bIsInBodyTxt : 1; + BOOL bValidValue : 1; + BOOL bInitialized : 1; + +public: + SwDBField(SwDBFieldType*, ULONG nFmt = 0); + virtual ~SwDBField(); + + virtual SwFieldType* ChgTyp( SwFieldType* ); + + // Der aktuelle Text + inline void SetExpansion(const String& rStr); + virtual String Expand() const; + virtual SwField* Copy() const; + + virtual USHORT GetSubType() const; + virtual void SetSubType(USHORT nType); + + // Name oder Inhalt + virtual String GetCntnt(BOOL bName = FALSE) const; + + // fuer Berechnungen in Ausdruecken + void ChgValue( double d, BOOL bVal ); + + // Evaluierung ueber den DBMgr String rauspulen + void Evaluate(); + + // Evaluierung fuer Kopf und Fusszeilen + void ChangeExpansion( const SwFrm*, const SwTxtFld* ); + void InitContent(); + void InitContent(const String& rExpansion); + String GetOldContent(); + + inline void ChgBodyTxtFlag( BOOL bIsInBody ); + inline BOOL IsInBodyTxt() const; + + inline BOOL IsValidValue() const { return bValidValue; } + + inline BOOL IsInitialized() const { return bInitialized; } + inline void ClearInitialized() { bInitialized = FALSE; } + inline void SetInitialized() { bInitialized = TRUE; } + + // Name erfragen + virtual const String& GetPar1() const; + + // DBName + inline String GetDBName() const { return ((SwDBFieldType*)GetTyp())->GetDBName(); } + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +inline void SwDBField::SetExpansion(const String& rStr) + { aContent = rStr; } + +// wird von der Formatierung abgefragt +inline BOOL SwDBField::IsInBodyTxt() const + { return bIsInBodyTxt; } + +// wird von UpdateExpFlds gesetzt (dort ist die Node-Position bekannt) +inline void SwDBField::ChgBodyTxtFlag( BOOL bIsInBody ) + { bIsInBodyTxt = bIsInBody; } + +/*-------------------------------------------------------------------- + Beschreibung: Basisklasse fuer alle weiteren Datenbankfelder + --------------------------------------------------------------------*/ + +class SwDBNameInfField : public SwField +{ + String sDBName; + +protected: + const String& GetDBName() const {return sDBName;} + String& GetDBName() {return sDBName;} + + SwDBNameInfField(SwFieldType* pTyp, const String& rDBName, ULONG nFmt = 0); + +public: + // DBName + inline const String& GetRealDBName() { return sDBName; } + + String GetDBName(SwDoc* pDoc); + inline void SetDBName(const String& rDBName) { sDBName = rDBName; } + + // Name oder Inhalt + virtual String GetCntnt(BOOL bName = FALSE) const; + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + + +/*-------------------------------------------------------------------- + Beschreibung: Datenbankfeld Naechster Satz + --------------------------------------------------------------------*/ + +class SwDBNextSetFieldType : public SwFieldType +{ +public: + SwDBNextSetFieldType(); + + virtual SwFieldType* Copy() const; +}; + + +/*-------------------------------------------------------------------- + Beschreibung: Naechsten Datensatz mit Bedingung + --------------------------------------------------------------------*/ + +class SwDBNextSetField : public SwDBNameInfField +{ + String aCond; + BOOL bCondValid; + +public: + SwDBNextSetField( SwDBNextSetFieldType*, + const String& rCond, const String& rDummy, const String& rDBName); + + virtual String Expand() const; + virtual SwField* Copy() const; + + void Evaluate(SwDoc*); + inline void SetCondValid(BOOL bCond); + inline BOOL IsCondValid() const; + + // Condition + virtual const String& GetPar1() const; + virtual void SetPar1(const String& rStr); + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +inline BOOL SwDBNextSetField::IsCondValid() const + { return bCondValid; } + +inline void SwDBNextSetField::SetCondValid(BOOL bCond) + { bCondValid = bCond; } + +/*-------------------------------------------------------------------- + Beschreibung: Datenbankfeld Naechster Satz + --------------------------------------------------------------------*/ + +class SwDBNumSetFieldType : public SwFieldType +{ +public: + SwDBNumSetFieldType(); + + virtual SwFieldType* Copy() const; +}; + + +/*-------------------------------------------------------------------- + Beschreibung: Datensatz mit Nummer xxx + Die Nummer steht in nFormat + ! kleiner Missbrauch + --------------------------------------------------------------------*/ + +class SwDBNumSetField : public SwDBNameInfField +{ + String aCond; + String aPar2; + BOOL bCondValid; + +public: + SwDBNumSetField(SwDBNumSetFieldType*, const String& rCond, const String& rDBNum, const String& rDBName); + + virtual String Expand() const; + virtual SwField* Copy() const; + + inline BOOL IsCondValid() const; + inline void SetCondValid(BOOL bCond); + void Evaluate(SwDoc*); + + // Condition + virtual const String& GetPar1() const; + virtual void SetPar1(const String& rStr); + + // Datensatznummer + virtual String GetPar2() const; + virtual void SetPar2(const String& rStr); + + // Die Datensatznummer steht in nFormat !! + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +inline BOOL SwDBNumSetField::IsCondValid() const + { return bCondValid; } + +inline void SwDBNumSetField::SetCondValid(BOOL bCond) + { bCondValid = bCond; } + +/*-------------------------------------------------------------------- + Beschreibung: Datenbankname + --------------------------------------------------------------------*/ + +class SwDBNameFieldType : public SwFieldType +{ + SwDoc *pDoc; +public: + SwDBNameFieldType(SwDoc*); + + String Expand(ULONG) const; + virtual SwFieldType* Copy() const; +}; + +/*-------------------------------------------------------------------- + Beschreibung: Datenbankfeld + --------------------------------------------------------------------*/ + +class SwDBNameField : public SwDBNameInfField +{ +public: + SwDBNameField(SwDBNameFieldType*, const String& rDBName, ULONG nFmt = 0); + + virtual String Expand() const; + virtual SwField* Copy() const; + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +/*-------------------------------------------------------------------- + Beschreibung: Datensatznummer + --------------------------------------------------------------------*/ + +class SwDBSetNumberFieldType : public SwFieldType +{ +public: + SwDBSetNumberFieldType(); + + virtual SwFieldType* Copy() const; +}; + +/*-------------------------------------------------------------------- + Beschreibung: Datenbankfeld + --------------------------------------------------------------------*/ + +class SwDBSetNumberField : public SwDBNameInfField +{ + long nNumber; + +public: + SwDBSetNumberField(SwDBSetNumberFieldType*, const String& rDBName, ULONG nFmt = 0); + + virtual String Expand() const; + virtual SwField* Copy() const; + void Evaluate(SwDoc*); + + inline long GetSetNumber() const; + inline void SetSetNumber(long nNum); + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +inline long SwDBSetNumberField::GetSetNumber() const + { return nNumber; } + +inline void SwDBSetNumberField::SetSetNumber(long nNum) + { nNumber = nNum; } + + +#endif // _DBFLD_HXX diff --git a/sw/inc/dbmgr.hxx b/sw/inc/dbmgr.hxx new file mode 100644 index 000000000000..07ddffd79730 --- /dev/null +++ b/sw/inc/dbmgr.hxx @@ -0,0 +1,383 @@ +/************************************************************************* + * + * $RCSfile: dbmgr.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _SWDBMGR_HXX +#define _SWDBMGR_HXX + + +#ifndef _STRING_HXX //autogen +#include <tools/string.hxx> +#endif + +#ifdef REPLACE_OFADBMGR +#ifndef _SBAITEMS_HXX +#include "offmgr/sbaitems.hxx" +#endif +#ifndef _COM_SUN_STAR_UTIL_DATE_HPP_ +#include <com/sun/star/util/Date.hpp> +#endif + +#else + +#ifndef _OFF_OFADBMGR_HXX //autogen +#include <offmgr/ofadbmgr.hxx> +#endif +#endif + +#include "swtypes.hxx" // fuer aEmptyStr + +#ifdef REPLACE_OFADBMGR +#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_ +#include <com/sun/star/uno/Reference.h> +#endif +#ifndef _COM_SUN_STAR_UNO_SEQUENCE_H_ +#include <com/sun/star/uno/Sequence.h> +#endif +#ifndef _COM_SUN_STAR_LANG_LOCALE_HPP_ +#include <com/sun/star/lang/Locale.hpp> +#endif +namespace com{namespace sun{namespace star{ + namespace sdbc{ + class XConnection; + class XStatement; + class XDataSource; + class XResultSet; + } + namespace beans{ + + class XPropertySet; + } + namespace sdbcx{ + class XColumnsSupplier; + } + namespace util{ + class XNumberFormatter; + } +}}} + +struct SwDBFormatData +{ + com::sun::star::util::Date aNullDate; + com::sun::star::uno::Reference< com::sun::star::util::XNumberFormatter> xFormatter; + com::sun::star::lang::Locale aLocale; +}; +#endif //REPLACE_OFADBMGR + +class SwView; +class SwWrtShell; +class SwPrtOptions; +class SfxProgress; +class ListBox; +class Button; +class SvNumberFormatter; + +// ----------------------------------------------------------------------- + +enum DBMgrOptions +{ + DBMGR_MERGE, // Datensaetze in Felder + DBMGR_INSERT, // Datensaetze in Text + DBMGR_MERGE_MAILMERGE, // Serienbriefe drucken + DBMGR_MERGE_MAILING, // Serienbriefe als email versenden + DBMGR_MERGE_MAILFILES // Serienbriefe als Datei(en) speichern +}; + +// ----------------------------------------------------------------------- + +/*-------------------------------------------------------------------- + Beschreibung: (neue) Logische Datenbanken verwalten + --------------------------------------------------------------------*/ +#ifdef REPLACE_OFADBMGR +#define SW_DB_SELECT_UNKNOWN 0 +#define SW_DB_SELECT_TABLE 1 +#define SW_DB_SELECT_QUERY 2 + +struct SwDSParam +{ + String sDataSource; + String sTableOrQuery; + BYTE nTableOrQuery; + String sStatement; + com::sun::star::util::Date aNullDate; + + ::com::sun::star::uno::Reference<com::sun::star::util::XNumberFormatter> xFormatter; + ::com::sun::star::uno::Reference<::com::sun::star::sdbc::XConnection> xConnection; + ::com::sun::star::uno::Reference<::com::sun::star::sdbc::XStatement> xStatement; + ::com::sun::star::uno::Reference<::com::sun::star::sdbc::XResultSet> xResultSet; + + SbaSelectionListRef xSelectionList; + BOOL bScrollable; + BOOL bSelectionList; + BOOL bEndOfDB; + long nSelectionIndex; + + SwDSParam(const String& rSource, const String& rTable, BYTE nType, const String& rStatement) : + sDataSource(rSource), + sTableOrQuery(rTable), + nTableOrQuery(nType), + sStatement(rStatement), + bScrollable(FALSE), + bSelectionList(FALSE), + bEndOfDB(FALSE), + nSelectionIndex(0) + {} +}; +typedef SwDSParam* SwDSParamPtr; +SV_DECL_PTRARR_DEL(SwDSParamArr, SwDSParamPtr, 0, 5) + +#endif //REPLACE_OFADBMGR + +#ifdef REPLACE_OFADBMGR +class SwNewDBMgr +#else +class SwNewDBMgr : public OfaDBMgr +#endif +{ + SbaSelectionListRef pMergeList; // Liste der fr Serienbrief selektierten Eintr„ge + String sEMailAddrFld; // Mailing: Spaltenname der E-Mail Adresse + String sSubject; // Mailing: Subject + String sAttached; // Mailing: Attachte Files + USHORT nMergeType; + BOOL bInitDBFields : 1; // TRUE: Datenbank an Feldern beim Mergen + BOOL bSingleJobs : 1; // Einzelne Druckjobs bei Aufruf aus Basic + BOOL bCancel : 1; // Serienbrief-Save abgebrochen + +#ifdef REPLACE_OFADBMGR + BOOL bInMerge : 1; //merge process active + SwDSParamArr aDataSourceParams; + + SwDSParam* pMergeData; + + BOOL OpenMergeSource(const String& rDataSource, + const String& rDataTableOrQuery, + const String& rStatement, + const SbaSelectionListRef xSelectionList); + SwDSParam* FindDSData(const String& rDBName, BOOL bCreate); +#endif + + + DECL_LINK( PrtCancelHdl, Button * ); + + // Datensaetze als Text ins Dokument einfuegen +#ifdef REPLACE_OFADBMGR + void ImportFromConnection( SwWrtShell* pSh); +#else + void ImportFromConnection( SwWrtShell* pSh, + const SbaSelectionList* pSelList = 0 ); +#endif + + // Einzelnen Datensatz als Text ins Dokument einfuegen +#ifdef REPLACE_OFADBMGR + void ImportDBEntry(SwWrtShell* pSh); +#else + void ImportDBEntry(SbaDBDataDef* pDef, SwWrtShell* pSh); + BOOL GotoNextSelectedRecord( BOOL bSyncronized ); +#endif + + // Mischen von Datensaetzen in Felder, dann per email versenden + BOOL MergeMailing(SwWrtShell* pSh); + // Mischen von Datensaetzen in Felder, dann als Datei abspeichern + BOOL MergeMailFiles(SwWrtShell* pSh); +public: + SwNewDBMgr(); +#ifdef REPLACE_OFADBMGR + ~SwNewDBMgr(); +#endif + // Am Dokument Datenbank- Tabellenname und SQL-Select-Statement setzen + void ChgDBName( SwWrtShell* pSh, +#ifdef REPLACE_OFADBMGR + const String& rDataSource, + const String& rTableOrQuery, +#else + const String& rDBName, +#endif + const String& rStatement ); + + // Art des aktellen Mergens. Siehe DBMgrOptions-enum + inline USHORT GetMergeType() const { return nMergeType; } + inline void SetMergeType( USHORT nTyp ) { nMergeType = nTyp; } + + // Mischen von Datensaetzen in Felder + BOOL Merge(USHORT nOpt, SwWrtShell* pSh, const String& rStatement, + const SbaSelectionListRef pSelectionList, +#ifdef REPLACE_OFADBMGR + const String& rDataSource, + const String& rTableOrQuery, +#else + const String& rDBName, +#endif + const String *pPrinter = NULL); + BOOL Merge(SwWrtShell* pSh); + // Mischen von Datensaetzen in Felder, dann drucken + BOOL MergePrint( SwView& rView, + SwPrtOptions& rOpt, SfxProgress& rProgress ); + inline SbaSelectionListRef& GetMergeList() { return pMergeList; } + + // Datenbankfelder mit fehlendem Datenbankname initialisieren + inline BOOL IsInitDBFields() const { return bInitDBFields; } + inline void SetInitDBFields(BOOL b) { bInitDBFields = b; } + + // Serienbriefe einzelnd oder alle zusammen drucken/speichern + inline BOOL IsSingleJobs() const { return bSingleJobs; } + inline void SetSingleJobs(BOOL b) { bSingleJobs = b; } + + // Mailing + // email-Daten setzen + inline void SetEMailColumn(const String& sColName) { sEMailAddrFld = sColName; } + inline void SetSubject(const String& sSbj) { sSubject = sSbj; } + inline void SetAttachment(const String& sAtt) { sAttached = sAtt; } + + +#ifdef REPLACE_OFADBMGR + // Listbox mit allen Tabellennamen einer Datenbank fuellen + BOOL GetTableNames(ListBox* pListBox, const String& rDBName ); + // Listbox mit allen Spaltennamen einer Datenbanktabelle fuellen + BOOL GetColumnNames(ListBox* pListBox, + const String& rDBName, const String& rTableName, BOOL bAppend = FALSE); + ULONG GetColumnFmt( const String& rDBName, + const String& rTableName, + const String& rColNm, + SvNumberFormatter* pNFmtr, + long nLanguage ); + sal_Int32 GetColumnType( const String& rDBName, + const String& rTableName, + const String& rColNm ); + +#else + // Listbox mit allen Tabellennamen einer Datenbank fuellen + BOOL GetTableNames(ListBox* pListBox, String sDBName); + // Listbox mit allen Spaltennamen einer Datenbanktabelle fuellen + BOOL GetColumnNames(ListBox* pListBox, String sDBName, BOOL bAppend = FALSE); + // DB-Cursor auf einen bestimmten Datensatz stellen + // (Ist im OfaDBMgr protected, daher hier nochmals als public fuer dbinsdlg.cxx) + inline void GotoRecord( ULONG nIndex ) + { OfaDBMgr::GotoRecord( FALSE, nIndex ); } + + ULONG GetColumnFmt( const String& rDBName, const String& rColNm, + SvNumberFormatter* pNFmtr ); + // Numberformat der Spalte ermitteln und ggfs. in den uebergebenen + // Formatter uebertragen + ULONG GetRealColumnFmt( const String& rColNm, ULONG nFmt, + SvNumberFormatter& rNFmtr ); + BOOL IsDBCaseSensitive( const String& rName ) const; +#endif + +#ifdef REPLACE_OFADBMGR + inline BOOL IsInMerge() const { return bInMerge; } + void EndMerge(); + + // check if a data source is open as merge source + BOOL IsDataSourceOpen(const String& rDataSource, const String& rTableOrQuery)const; + + // add data source information to the data source array - was PreInitDBData + void AddDSData(const String& rDBName, long nSelStart, long nSelEnd); + void GetDSSelection(const String& sDBDesc, long& rSelStart, long& rSelEnd); + + // open the source while fields are updated - for the calculator only! + BOOL OpenDataSource(const String& rDataSource, const String& rTableOrQuery); + sal_uInt32 GetSelectedRecordId(const String& rDataSource, const String& rTableOrQuery); + BOOL GetColumnCnt(const String& rSourceName, const String& rTableName, + const String& rColumnName, sal_uInt32 nAbsRecordId, long nLanguage, + String& rResult, double* pNumber); + + const SwDSParam* CreateDSData(const String& rDBName) + {return FindDSData(rDBName, TRUE);} + const SwDSParamArr& GetDSParamArray() const {return aDataSourceParams;} + + + //close all data sources - after fields were updated + void CloseAll(BOOL bIncludingMerge = TRUE); + + BOOL GetMergeColumnCnt(const String& rColumnName, USHORT nLanguage, + String &rResult, double *pNumber, sal_uInt32 *pFormat); + BOOL ToNextMergeRecord(); + BOOL ExistsNextRecord()const; + sal_uInt32 GetSelectedRecordId(); + sal_Bool ToRecordId(sal_Int32 nSet); + + BOOL ShowInBeamer(const String& rDBName, const String& rTableName, + BYTE nType, const String& rStatement); + + const String& GetAddressDBName(); + + static String GetDBField( + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xColumnProp, + const SwDBFormatData& rDBFormatData, + double *pNumber = NULL); + + static ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> + GetConnection(const String& rDataSource, + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource>& rxSource); + + static ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier> + GetColumnSupplier(::com::sun::star::uno::Reference<::com::sun::star::sdbc::XConnection>, + const String& rTableOrQuery, + BYTE eTableOrQuery = SW_DB_SELECT_UNKNOWN); + + static ::com::sun::star::uno::Sequence<rtl::OUString> GetExistingDatabaseNames(); + +#else + +#endif //REPLACE_OFADBMGR + +}; + +#endif + diff --git a/sw/inc/dcontact.hxx b/sw/inc/dcontact.hxx new file mode 100644 index 000000000000..b91a07efb6a0 --- /dev/null +++ b/sw/inc/dcontact.hxx @@ -0,0 +1,193 @@ +/************************************************************************* + * + * $RCSfile: dcontact.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _DCONTACT_HXX +#define _DCONTACT_HXX + +#ifndef _SVDOBJ_HXX //autogen +#include <svx/svdobj.hxx> +#endif +#include "calbck.hxx" + +class SfxPoolItem; +class SwFrmFmt; +class SwFlyFrmFmt; +class SwDrawFrmFmt; +class SwFlyFrm; +class SwFrm; +class SwPageFrm; +class SwVirtFlyDrawObj; +class SwFmtAnchor; +class SwFlyDrawObj; +class SwRect; + +//Der Umgekehrte Weg: Sucht das Format zum angegebenen Objekt. +//Wenn das Object ein SwVirtFlyDrawObj ist so wird das Format von +//selbigem besorgt. +//Anderfalls ist es eben ein einfaches Zeichenobjekt. Diese hat einen +//UserCall und der ist Client vom gesuchten Format. +//Implementierung in dcontact.cxx +SwFrmFmt *FindFrmFmt( SdrObject *pObj ); +inline const SwFrmFmt *FindFrmFmt( const SdrObject *pObj ) +{ return ::FindFrmFmt( (SdrObject*)pObj ); } + +//Bei Aenderungen das Objekt aus dem ContourCache entfernen. +//Implementierung in TxtFly.Cxx +void ClrContourCache( const SdrObject *pObj ); + +// liefert BoundRect inklusive Abstand +SwRect GetBoundRect( const SdrObject* pObj ); + +//Liefert den UserCall ggf. vom Gruppenobjekt +SdrObjUserCall* GetUserCall( const SdrObject* ); + +// liefert TRUE falls das SrdObject ein Marquee-Object (Lauftext) ist +FASTBOOL IsMarqueeTextObj( const SdrObject& rObj ); + +//Basisklasse fuer die folgenden KontaktObjekte (Rahmen+Zeichenobjekte) +class SwContact : public SdrObjUserCall, public SwClient +{ + SdrObject *pMasterObj; +public: + TYPEINFO(); + + //Fuer den Reader, es wir nur die Verbindung hergestellt. + SwContact( SwFrmFmt *pToRegisterIn, SdrObject *pObj ); + SwContact( SwModify *pToRegisterIn ) : SwClient( pToRegisterIn ){} + + const SdrObject *GetMaster() const { return pMasterObj; } + SdrObject *GetMaster() { return pMasterObj; } + void SetMaster( SdrObject* pNew ){ pMasterObj = pNew; } + + virtual ~SwContact(); + + SwFrmFmt *GetFmt(){ return (SwFrmFmt*)GetRegisteredIn(); } + const SwFrmFmt *GetFmt() const + { return (const SwFrmFmt*)GetRegisteredIn(); } +}; + +//KontactObjekt fuer die Verbindung zwischen Rahmen bzw. deren Formaten +//im StarWriter (SwClient) und den Zeichenobjekten des Drawing (SdrObjUserCall) + +class SwFlyDrawContact : public SwContact +{ +public: + TYPEINFO(); + + //Legt das DrawObjekt an und meldet es beim Model an. + SwFlyDrawContact( SwFlyFrmFmt *pToRegisterIn, SdrModel *pMod ); + SwFlyDrawContact( SwFrmFmt *pToRegisterIn, SdrObject *pObj ): + SwContact( pToRegisterIn, pObj ){} + + SwVirtFlyDrawObj *CreateNewRef( SwFlyFrm *pFly ); + + // virtuelle Methoden von SwClient + virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ); + +}; + +//KontactObjekt fuer die Verbindung von Formaten als Repraesentanten der +//Zeichenobjekte im StarWriter (SwClient) und den Objekten selbst im Drawing +//(SdrObjUserCall). + +class SwDrawContact : public SwContact +{ + SwFrm *pAnchor; + SwPageFrm *pPage; +public: + TYPEINFO(); + + SwDrawContact( SwFrmFmt *pToRegisterIn, SdrObject *pObj ); + virtual ~SwDrawContact(); + + const SwPageFrm *GetPage() const { return pPage; } + SwPageFrm *GetPage() { return pPage; } + const SwFrm *GetAnchor() const { return pAnchor; } + SwFrm *GetAnchor() { return pAnchor; } + void ChgAnchor( SwFrm *pNew ) { pAnchor = pNew; } + void ChgPage ( SwPageFrm *pNew){ pPage = pNew; } + + void ChkPage(); //Muss immer nach SetAnchorPos() gerufen + //werden. Das Objekt haengt sich dann an + //die richtige Seite. + SwPageFrm* FindPage( const SwRect &rRect ); + + //Fuegt das SdrObject in die Arrays (SwPageFrm und SwFrm) des Layouts ein. + //Der Anker wird Anhand des Attributes SwFmtAnchor bestimmt. + //Das Objekt wird ggf. beim alten Anker abgemeldet. + void ConnectToLayout( const SwFmtAnchor *pAnch = 0 ); + void DisconnectFromLayout( BOOL bRemoveFromPage = TRUE ); //Abmelden beim Anker. + + // virtuelle Methoden von SwClient + virtual void Modify( SfxPoolItem *pOld, SfxPoolItem *pNew ); + + // virtuelle Methoden von SdrObjUserCall + virtual void Changed(const SdrObject& rObj, SdrUserCallType eType, const Rectangle& rOldBoundRect); + + // wird von Changed() und auch vom UndoDraw benutzt, uebernimmt + // das Notifien von Absaetzen, die ausweichen muessen + void _Changed(const SdrObject& rObj, SdrUserCallType eType, const Rectangle* pOldBoundRect); + + //Moved alle SW-Verbindungen zu dem neuen Master. + void ChangeMasterObject( SdrObject *pNewMaster ); +}; + +#endif + diff --git a/sw/inc/ddefld.hxx b/sw/inc/ddefld.hxx new file mode 100644 index 000000000000..32e48f01a814 --- /dev/null +++ b/sw/inc/ddefld.hxx @@ -0,0 +1,152 @@ +/************************************************************************* + * + * $RCSfile: ddefld.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _DDEFLD_HXX +#define _DDEFLD_HXX + +#ifndef _LNKBASE_HXX //autogen +#include <so3/lnkbase.hxx> +#endif +#include "fldbas.hxx" + +class SwDoc; + +/*-------------------------------------------------------------------- + Beschreibung: FieldType fuer DDE + --------------------------------------------------------------------*/ + +class SwDDEFieldType : public SwFieldType +{ + String aName; + String aExpansion; + + SvBaseLinkRef refLink; + SwDoc* pDoc; + + USHORT nRefCnt; + BOOL bCRLFFlag : 1; + BOOL bDeleted : 1; + + void _RefCntChgd(); +public: + SwDDEFieldType( const String& rName, const String& rCmd, + USHORT = LINKUPDATE_ONCALL ); + ~SwDDEFieldType(); + + const String& GetExpansion() const { return aExpansion; } + void SetExpansion( const String& rStr ) { aExpansion = rStr, + bCRLFFlag = FALSE; } + + virtual SwFieldType* Copy() const; + virtual const String& GetName() const; + + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); + + String GetCmd() const; + void SetCmd( const String& rStr ); + + USHORT GetType() const { return refLink->GetUpdateMode(); } + void SetType( USHORT nType ) { refLink->SetUpdateMode( nType ); } + + BOOL IsDeleted() const { return bDeleted; } + void SetDeleted( BOOL b ) { bDeleted = b; } + + BOOL IsConnected() const { return 0 != refLink->GetObject(); } + void UpdateNow() { refLink->Update(); } + void Disconnect() { refLink->Disconnect(); } + + const SvBaseLink& GetBaseLink() const { return *refLink; } + + const SwDoc* GetDoc() const { return pDoc; } + SwDoc* GetDoc() { return pDoc; } + void SetDoc( SwDoc* pDoc ); + + void IncRefCnt() { if( !nRefCnt++ && pDoc ) _RefCntChgd(); } + void DecRefCnt() { if( !--nRefCnt && pDoc ) _RefCntChgd(); } + + void SetCRLFDelFlag( BOOL bFlag = TRUE ) { bCRLFFlag = bFlag; } + BOOL IsCRLFDelFlag() const { return bCRLFFlag; } +}; + +/*-------------------------------------------------------------------- + Beschreibung: DDE-Feld + --------------------------------------------------------------------*/ + +class SwDDEField : public SwField +{ +public: + SwDDEField(SwDDEFieldType*); + ~SwDDEField(); + + virtual String Expand() const; + virtual SwField* Copy() const; + + // ueber Typen Parameter ermitteln + // Name kann nicht geaendert werden + virtual const String& GetPar1() const; + + // Commando + virtual String GetPar2() const; + virtual void SetPar2(const String& rStr); +}; + + +#endif // _DDEFLD_HXX diff --git a/sw/inc/dlelstnr.hxx b/sw/inc/dlelstnr.hxx new file mode 100644 index 000000000000..02f337b058f0 --- /dev/null +++ b/sw/inc/dlelstnr.hxx @@ -0,0 +1,106 @@ +/************************************************************************* + * + * $RCSfile: dlelstnr.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _DLELSTNR_HXX_ +#define _DLELSTNR_HXX_ + +#include <cppuhelper/weak.hxx> + +#ifndef _COM_SUN_STAR_LINGUISTIC_XDICTIONARYLIST_HPP_ +#include <com/sun/star/linguistic/XDictionaryList.hpp> +#endif +#ifndef _COM_SUN_STAR_LINGUISTIC_XDICTIONARYLISTEVENTLISTENER_HPP_ +#include <com/sun/star/linguistic/XDictionaryListEventListener.hpp> +#endif +#ifndef _CPPUHELPER_IMPLBASE1_HXX_ +#include <cppuhelper/implbase1.hxx> // helper for implementations +#endif + +/////////////////////////////////////////////////////////////////////////// +// SwDicListEvtListener +// is a ::com::sun::star::linguistic::XDictionaryListEventListener that triggers spellchecking +// and hyphenation (yet to be implemented) when relevant changes to the +// dictionaries of the dictionary list were made. +// + +class SwDicListEvtListener : public cppu::WeakImplHelper1 +< + ::com::sun::star::linguistic::XDictionaryListEventListener +> +{ +private: + ::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XDictionaryList > xDicList; + + // disallow use of copy-constructor and assignment operator + SwDicListEvtListener(const SwDicListEvtListener &); + SwDicListEvtListener & operator = (const SwDicListEvtListener &); + +public: + SwDicListEvtListener( const ::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XDictionaryList > &rxDicList ); + virtual ~SwDicListEvtListener(); + + // ::com::sun::star::linguistic::XDictionaryListEventListener + virtual void SAL_CALL processDictionaryListEvent(const ::com::sun::star::linguistic::DictionaryListEvent& aDicListEvent) throw( ::com::sun::star::uno::RuntimeException ); +}; + + +#endif + diff --git a/sw/inc/dobjfac.hxx b/sw/inc/dobjfac.hxx new file mode 100644 index 000000000000..a7af1c30c38e --- /dev/null +++ b/sw/inc/dobjfac.hxx @@ -0,0 +1,83 @@ +/************************************************************************* + * + * $RCSfile: dobjfac.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _DOBJFAC_HXX +#define _DOBJFAC_HXX + +#ifndef _LINK_HXX //autogen +#include <tools/link.hxx> +#endif + +//----------------------- +// class SwObjectFactory +//----------------------- +class SdrObjFactory; + +class SwObjectFactory +{ +public: + DECL_LINK( MakeObject, SdrObjFactory * ); +}; + +extern SwObjectFactory aSwObjectFactory; + + +#endif // _DOBJFAC_HXX + diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx new file mode 100644 index 000000000000..d26acabd17dc --- /dev/null +++ b/sw/inc/doc.hxx @@ -0,0 +1,1770 @@ +/************************************************************************* + * + * $RCSfile: doc.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _DOC_HXX +#define _DOC_HXX + +#define _SVSTDARR_STRINGSDTOR +#include <svtools/svstdarr.hxx> + +#ifndef _TIMER_HXX //autogen +#include <vcl/timer.hxx> +#endif +#ifndef _SWTYPES_HXX +#include <swtypes.hxx> +#endif +#ifndef _NDARR_HXX +#include <ndarr.hxx> +#endif +#ifndef _SWATRSET_HXX +#include <swatrset.hxx> +#endif +#ifndef _TOXE_HXX +#include <toxe.hxx> // enums +#endif +#ifndef _REDLENUM_HXX +#include <redlenum.hxx> // enums +#endif +#ifndef _BKMRKE_HXX +#include <bkmrke.hxx> +#endif +#ifndef _FLYENUM_HXX +#include <flyenum.hxx> +#endif +#ifndef _ITABENUM_HXX +#include <itabenum.hxx> +#endif + +#ifndef _COM_SUN_STAR_LINGUISTIC_XSPELLCHECKER1_HPP_ +#include <com/sun/star/linguistic/XSpellChecker1.hpp> +#endif +#ifndef _COM_SUN_STAR_LINGUISTIC_XHYPHENATEDWORD_HPP_ +#include <com/sun/star/linguistic/XHyphenatedWord.hpp> +#endif + +class SwExtTextInput; +class DateTime; +class EditFieldInfo; +class JobSetup; +class Color; +class KeyCode; +class Outliner; +class OutputDevice; +class Point; +class SbxArray; +class SdrModel; +class SdrObject; +class SdrUndoAction; +class SfxDocumentInfo; +class SfxPrinter; +class SvData; +class SvEmbeddedObjectRef; +class SvNumberFormatter; +class SvPersist; +class SvPseudoObject; +class SvStorage; +class SvStrings; +class SvStringsSort; +class SvUShorts; +class SvUShortsSort; +class SvxAutoCorrDoc; +class SvxLinkManager; +class SvxMacro; +class SvxMacroTableDtor; +class SvxBorderLine; +class SwAutoCompleteWord; +class SwAutoCorrExceptWord; +class SwBookmark; +class SwBookmarks; +class SwCalc; +class SwCellFrm; +class SwCharFmt; +class SwCharFmts; +class SwClient; +class SwConditionTxtFmtColl; +class SwCrsrShell; +class SwCursor; +class SwDBNameInfField; +class SwDocShell; +class SwDocUpdtFld; +class SwDrawFrmFmt; +class SwDrawView; +class SwEditShell; +class SwFieldType; +class SwFldTypes; +class SwFlyFrm; +class SwFlyFrmFmt; +class SwFmt; +class SwFmtCol; +class SwFmtINetFmt; +class SwFmtRefMark; +class SwFrmFmt; +class SwFrmFmts; +class SwFtnIdxs; +class SwFtnInfo; +class SwEndNoteInfo; +class SwGrfFmtColl; +class SwGrfFmtColls; +class SwLineNumberInfo; +class SwNewDBMgr; +class SwNoTxtNode; +class SwNodeIndex; +class SwNodeRange; +class SwNumRule; +class SwNumRuleTbl; +class SwPageDesc; +class SwPosFlyFrms; +class SwPagePreViewPrtData; +class SwRedline; +class SwRedlineTbl; +class SwRootFrm; +class SwSectionFmt; +class SwSectionFmts; +class SwSelBoxes; +class SwSpzFrmFmts; +class SwTOXBase; +class SwTOXBaseSection; +class SwTOXMark; +class SwTOXMarks; +class SwTOXType; +class SwTOXTypes; +class SwTabCols; +class SwTable; +class SwTableAutoFmt; +class SwTableBox; +class SwTableBoxFmt; +class SwTableFmt; +class SwTableLineFmt; +class SwTableNode; +class SwTextBlocks; +class SwTxtFld; +class SwTxtFmtColl; +class SwTxtFmtColls; +class SwURLStateChanged; +class SwUndo; +class SwUndoIds; +class SwUndoIter; +class SwUndos; +class SwUnoCrsr; +class SwUnoCrsrTbl; +class ViewShell; +class _SetGetExpFld; +class SwDrawContact; +class SwLayouter; +class SdrView; +class SdrMarkList; +class SwAuthEntry; +class SwUnoCallBack; +struct SwCallMouseEvent; +struct SwDocStat; +struct SwHash; +struct SwSortOptions; +struct SwDefTOXBase_Impl; + +//PageDescriptor-Schnittstelle, Array hier wegen inlines. +typedef SwPageDesc* SwPageDescPtr; +SV_DECL_PTRARR_DEL( SwPageDescs, SwPageDescPtr, 4, 4 ); + +enum SwMoveFlags +{ + DOC_MOVEDEFAULT = 0x00, + DOC_MOVEALLFLYS = 0x01, + DOC_CREATEUNDOOBJ = 0x02, + DOC_MOVEREDLINES = 0x04 +}; + +#define DUMMY_PARASPACEMAX 0x04 +#define DUMMY_PARASPACEMAX_AT_PAGES 0x20 + + +#define SW_HYPH_ERROR 0 +#define SW_HYPH_OK 1 +#define SW_HYPH_ABORTED 2 +#define SW_HYPH_CONTINUE 3 + +class SwDoc +{ + friend class SwReader; // fuers Undo von Insert(SwDoc) + friend class SwSwgReader; // Zugriff auf bDtor-Flag (wg. Loeschen v.Frames) + friend class Sw3IoImp; // Zugriff u.a. auf den Drawing Layer + friend class SwCompareData; // fuers Undo vom CompareDoc + + friend void _InitCore(); + friend void _FinitCore(); + + //Fuer das Loeschen der Header-/Footer-Formate + //Implementierung und Benutzung in frmatr.cxx + friend void DelHFFormat( SwClient *, SwFrmFmt * ); + +#if !( defined(PRODUCT) || defined(MAC) || defined(PM2) ) + friend class SwUndoWriter; // fuers Schreiben der Undo/Redo-History +#endif + + //---------------- private Member -------------------------------- + + // ------------------------------------------------------------------- + // die Objecte + SwNodes aNodes; // Inhalt des Dokumentes + SwNodes aUndoNodes; // Inhalt fuer das Undo + SwAttrPool aAttrPool; // der Attribut Pool + SwPageDescs aPageDescs; // PageDescriptoren + Link aOle2Link; // OLE 2.0-Benachrichtigung + AutoTimer aIdleTimer; // der eigene IdleTimer + Timer aChartTimer; // der Timer fuers Update aller Charts + Timer aOLEModifiedTimer; // Timer for update modified OLE-Objecs + String aDBName; // logischer Datenbankname + String sSectionPasswd; // Passwort fuer geschuetzte Bereiche + String sTOIAutoMarkURL; // ::com::sun::star::util::URL of table of index AutoMark file + SvStringsDtor aPatternNms; // Array fuer die Namen der Dokument-Vorlagen + + + // ------------------------------------------------------------------- + // die Pointer + //Defaultformate + SwFrmFmt *pDfltFrmFmt; + SwFrmFmt *pEmptyPageFmt; // Format fuer die Default-Leerseite. + SwFrmFmt *pColumnContFmt; // Format fuer Spaltencontainer + SwCharFmt *pDfltCharFmt; + SwTxtFmtColl *pDfltTxtFmtColl; // Defaultformatcollections + SwGrfFmtColl *pDfltGrfFmtColl; + + SwFrmFmts *pFrmFmtTbl; // Formattabellen + SwCharFmts *pCharFmtTbl; + SwSpzFrmFmts *pSpzFrmFmtTbl; + SwSectionFmts *pSectionFmtTbl; + SwFrmFmts *pTblFrmFmtTbl; // spz. fuer Tabellen + SwTxtFmtColls *pTxtFmtCollTbl; // FormatCollections + SwGrfFmtColls *pGrfFmtCollTbl; + + SwBookmarks *pBookmarkTbl; //Bookmarks + + SwTOXTypes *pTOXTypes; // Verzeichnisse + SwDefTOXBase_Impl * pDefTOXBases; // defaults of SwTOXBase's + + SwRootFrm *pLayout; // Rootframe des spezifischen Layouts. + SdrModel *pDrawModel; // StarView Drawing + + SwUndos *pUndos; // Undo/Redo History + + SwDocUpdtFld *pUpdtFlds; // Struktur zum Field-Update + SwFldTypes *pFldTypes; // Feldtypen + SwNewDBMgr *pNewDBMgr; // Pointer auf den neuen DBMgr fuer + // Evaluierung der DB-Fields + SfxPrinter *pPrt; + + SwDoc *pGlossaryDoc; // Pointer auf das Glossary-Dokument. Dieses + + SwNumRule *pOutlineRule; + SwFtnInfo *pFtnInfo; + SwEndNoteInfo *pEndNoteInfo; + SwLineNumberInfo *pLineNumberInfo; + SwFtnIdxs *pFtnIdxs; + SwDocStat *pDocStat; // Statistic Informationen + SfxDocumentInfo *pSwgInfo; // Dokumentinformationen + SvxMacroTableDtor *pMacroTable; // Tabelle der dokumentglobalen Macros + + SwDocShell *pDocShell; // Ptr auf die SfxDocShell vom Doc + SvEmbeddedObjectRef* pDocShRef; // fuers Kopieren von OLE-Nodes (wenn keine + // DocShell gesetzt ist, muss dieser + // Ref-Pointer gesetzt sein!!!!) + SvxLinkManager *pLinkMgr; // Liste von Verknuepften (Grafiken/DDE/OLE) + + SwAutoCorrExceptWord *pACEWord; // fuer die automatische Uebernahme von + // autokorrigierten Woertern, die "zurueck" + // verbessert werden + SwURLStateChanged *pURLStateChgd; // SfxClient fuer Aenderungen in der + // INetHistory + SvNumberFormatter *pNumberFormatter; // NumFormatter fuer die Tabellen/Felder + SwNumRuleTbl *pNumRuleTbl; // Liste aller benannten NumRules + SwRedlineTbl *pRedlineTbl; // Liste aller Redlines + String *pAutoFmtRedlnComment; // Kommentar fuer Redlines, die + // uebers Autoformat eingefuegt werden + SwUnoCrsrTbl *pUnoCrsrTbl; + + SwPagePreViewPrtData *pPgPViewPrtData; // Einzuege/Abstaende fuers + // Drucken der Seitenansicht + SwPaM *pExtInputRing; + + SwLayouter *pLayouter; // ::com::sun::star::frame::Controller for complex layout formatting + // like footnote/endnote in sections + + SwUnoCallBack *pUnoCallBack; + // ------------------------------------------------------------------- + // sonstige + sal_uInt16 nUndoPos; // akt. Undo-InsertPosition (fuers Redo!) + sal_uInt16 nUndoSavePos; // Position im Undo-Array, ab der das Doc + // nicht als modifiziert gilt + sal_uInt16 nUndoCnt; // Anzahl von Undo Aktionen + sal_uInt16 nUndoSttEnd; // != 0 -> innerhalb einer Klammerung + + sal_uInt16 nAutoFmtRedlnCommentNo; // SeqNo fuers UI-seitige zusammenfassen + // von AutoFmt-Redlines. Wird vom SwAutoFmt + // verwaltet! + sal_uInt16 nLinkUpdMode; // UpdateMode fuer Links + sal_uInt16 nFldUpdMode; // Mode fuer Felder/Charts automatisch aktualisieren + + SwRedlineMode eRedlineMode; // aktueller Redline Modus + + sal_Int8 nLinkCt; // wieviele kennen das Dokument + sal_Int8 nLockExpFld; // Wenn != 0 hat UpdateExpFlds() keine Wirkung + + sal_Int8 nHeaven; // LayerIds, Heaven == ueber dem Dokument + sal_Int8 nHell; // Hell == unter dem Dokument + sal_Int8 nControls; // Controls == ganz oben + + sal_Bool bGlossDoc : 1; //TRUE: ist ein Textbaustein Dokument + sal_Bool bModified : 1; //TRUE: Dokument ist veraendert + sal_Bool bDtor : 1; //TRUE: ist im SwDoc DTOR + // leider auch temporaer von + // SwSwgReader::InLayout(), wenn fehlerhafte + //Frames geloescht werden muessen + sal_Bool bUndo : 1; // TRUE: Undo eingeschaltet + sal_Bool bGroupUndo : 1; // TRUE: Undos werden gruppiert + sal_Bool bPageNums : 1; // TRUE: es gibt virtuelle Seitennummern + sal_Bool bLoaded : 1; // TRUE: ein geladenes Doc + sal_Bool bUpdateExpFld : 1; // TRUE: Expression-Felder updaten + sal_Bool bNewDoc : 1; // TRUE: neues Doc + sal_Bool bNewFldLst : 1; // TRUE: Felder-Liste neu aufbauen + sal_Bool bCopyIsMove : 1; // TRUE: Copy ist ein verstecktes Move + sal_Bool bNoDrawUndoObj : 1; // TRUE: keine DrawUndoObjecte speichern + sal_Bool bVisibleLinks : 1; // TRUE: Links werden sichtbar eingefuegt + sal_Bool bBrowseMode : 1; // TRUE: Dokument im BrowseModus anzeigen + sal_Bool bInReading : 1; // TRUE: Dokument wird gerade gelesen + sal_Bool bUpdateTOX : 1; // TRUE: nach Dokument laden die TOX Updaten + sal_Bool bInLoadAsynchron: 1; // TRUE: Dokument wird gerade asynchron geladen + sal_Bool bHTMLMode : 1; // TRUE: Dokument ist im HTMLMode + sal_Bool bHeadInBrowse : 1; // TRUE: Header sind im BrowseMode aktiviert + sal_Bool bFootInBrowse : 1; // TRUE: Footer sind im BrowseMode aktiviert + sal_Bool bFrmBeepEnabled : 1; // TRUE: Frames beepen wenn der Inhalt zu gross wird + sal_Bool bInCallModified : 1; // TRUE: im Set/Reset-Modified Link + sal_Bool bIsGlobalDoc : 1; // TRUE: es ist ein GlobalDokument + sal_Bool bGlblDocSaveLinks : 1; // TRUE: im GlobalDoc. gelinkte Sect. mit speichern + sal_Bool bIsLabelDoc : 1; // TRUE: es ist ein Etiketten-Dokument + sal_Bool bIsAutoFmtRedline : 1; // TRUE: die Redlines werden vom Autoformat aufgezeichnet + sal_Bool bOLEPrtNotifyPending:1; // TRUE: Printer ist geaendert und beim + // Erzeugen der ::com::sun::star::sdbcx::View ist eine Benachrichtigung + // der OLE-Objekte PrtOLENotify() notwendig. + sal_Bool bAllOLENotify :1; // True: Benachrichtigung aller Objekte ist notwendig + sal_Bool bIsRedlineMove : 1; // True: die Redlines werden in/aus der Section verschoben + sal_Bool bInsOnlyTxtGlssry : 1; // True: insert 'only text' glossary into doc + sal_Bool bContains_MSVBasic : 1; // True: MS-VBasic exist is in our storage + sal_Bool bPurgeOLE : 1; // TRUE: Purge OLE-Objects + + // ------------------------------------------------------------------- + // static - Members + static SvStringsDtor *pTextNmArray, // Array fuer alle + *pListsNmArray, // Pool-Vorlagen-Namen + *pExtraNmArray, + *pRegisterNmArray, + *pDocNmArray, + *pHTMLNmArray; + static SvStringsDtor *pFrmFmtNmArray, + *pChrFmtNmArray, + *pHTMLChrFmtNmArray; + static SvStringsDtor *pPageDescNmArray; + static SvStringsDtor *pNumRuleNmArray; + + static SwAutoCompleteWord *pACmpltWords; // Liste aller Worte fuers AutoComplete + static sal_uInt16 nUndoActions; // anzahl von Undo ::com::sun::star::chaos::Action + + // ------------------------------------------------------------------- + // Dummies Members fuers FileFormat + String sDummy1; // Dummy-Member. + String sDummy2; + sal_uInt32 n32Dummy1; + sal_uInt32 n32Dummy2; + sal_Int8 n8Dummy1; + sal_Int8 n8Dummy2; + + + //---------------- private Methoden ------------------------------ + + void AppendUndo(SwUndo*); // interne Verkuerzung fuer Insert am Ende + void ClearRedo(); // loescht alle UndoObjecte von nUndoPos + // bis zum Ende des Undo-Arrays + sal_Bool DelUndoObj( sal_uInt16 nEnde ); // loescht alle UndoObjecte vom Anfang + // bis zum angegebenen Ende + DECL_LINK( AddDrawUndo, SdrUndoAction * ); + // DrawModel + void DrawNotifyUndoHdl(); // wegen CLOOKs + void DrawSetRefDevice(); // wegen CLOOKs + + // nur fuer den internen Gebrauch deshalb privat. + // Kopieren eines Bereiches im oder in ein anderes Dokument ! + // Die Position darf nicht im Bereich liegen !! + sal_Bool _Copy( SwPaM&, SwPosition&, + sal_Bool MakeNewFrms = sal_True, SwPaM* pCpyRng = 0 ) const; // in ndcopy.cxx + + SwFlyFrmFmt* _MakeFlySection( const SwPosition& rAnchPos, + const SwCntntNode& rNode, RndStdIds eRequestId, + const SfxItemSet* pFlyAttrSet, + SwFrmFmt* = 0 ); + + SwFlyFrmFmt* _InsNoTxtNode( const SwPosition&rPos, SwNoTxtNode*, + const SfxItemSet* pFlyAttrSet, + const SfxItemSet* pGrfAttrSet, + SwFrmFmt* = 0 ); + + void _CopyFlyInFly( const SwNodeRange& rRg, const SwNodeIndex& rSttIdx, + sal_Bool bCopyFlyAtFly = sal_False ) const; // steht im ndcopy.cxx + sal_Bool SetFlyFrmAnchor( SwFrmFmt& rFlyFmt, SfxItemSet& rSet, sal_Bool bNewFrms ); + + typedef SwFmt* (SwDoc:: *FNCopyFmt)( const String&, SwFmt* ); + SwFmt* CopyFmt( const SwFmt& rFmt, const SvPtrarr& rFmtArr, + FNCopyFmt fnCopyFmt, const SwFmt& rDfltFmt ); + void CopyFmtArr( const SvPtrarr& rSourceArr, SvPtrarr& rDestArr, + FNCopyFmt fnCopyFmt, SwFmt& rDfltFmt ); + void _CopyPageDescHeaderFooter( sal_Bool bCpyHeader, + const SwFrmFmt& rSrcFmt, SwFrmFmt& rDestFmt ); + SwFmt* FindFmtByName( const SvPtrarr& rFmtArr, + const String& rName ) const; + SfxPrinter* _GetPrt() const; + void PrtDataChanged(); //Printer oder JobSetup geandert, es muss + //fuer entsprechende Invalidierungen und + //Benachrichtigungen gesorgt werden. + + static SvStringsDtor* NewNmArray( SvStringsDtor*&, sal_uInt16 nStt, sal_uInt16 nEnd ); + SvStringsDtor* NewTextNmArray() const; + SvStringsDtor* NewListsNmArray() const; + SvStringsDtor* NewExtraNmArray() const; + SvStringsDtor* NewRegisterNmArray() const; + SvStringsDtor* NewDocNmArray() const; + SvStringsDtor* NewHTMLNmArray() const; + SvStringsDtor* NewFrmFmtNmArray() const; + SvStringsDtor* NewChrFmtNmArray() const; + SvStringsDtor* NewHTMLChrFmtNmArray() const; + SvStringsDtor* NewPageDescNmArray() const; + SvStringsDtor* NewNumRuleNmArray() const; + + + // gcc: aFtnInfo::CopyCtor ist private, also muessen wir uns auch schuetzen + SwDoc( const SwDoc &); + + //wird nur von SwSwgReader::InlayoutFrames() verwendet! + inline void SetInDtor( sal_Bool b ) { bDtor = b; } + + // fuer Felder: + void _InitFieldTypes(); // wird vom CTOR gerufen!! + void _MakeFldList( int eMode ); + void RenameUserFld( const String& rOldName, const String& rNewName, + String& rFormel ); + // Datenbankfelder: + void UpdateDBNumFlds( SwDBNameInfField& rDBFld, SwCalc& rCalc ); + void AddUsedDBToList( SvStringsDtor& rDBNameList, + const SvStringsDtor& rUsedDBNames ); + void AddUsedDBToList( SvStringsDtor& rDBNameList, const String& rDBName ); + sal_Bool IsNameInArray( const SvStringsDtor& rOldNames, const String& rName ); + void GetAllDBNames( SvStringsDtor& rAllDBNames ); + void ReplaceUsedDBs( const SvStringsDtor& rUsedDBNames, + const String& rNewName, String& rFormel ); + SvStringsDtor& FindUsedDBs( const SvStringsDtor& rAllDBNames, + const String& rFormel, + SvStringsDtor& rUsedDBNames ); + + void InitDrawModel(); + void ReleaseDrawModel(); + + void _CreateNumberFormatter(); + + sal_Bool _UnProtectTblCells( SwTable& rTbl ); + + // erzeuge Anhand der vorgebenen Collection Teildokumente + // falls keine angegeben ist, nehme die Kapitelvorlage der 1. Ebene + sal_Bool SplitDoc( sal_uInt16 eDocType, const String& rPath, + const SwTxtFmtColl* pSplitColl ); + + // Charts der angegebenen Tabelle updaten + void _UpdateCharts( const SwTable& rTbl, ViewShell& rVSh ) const; + + // unser eigener 'IdlTimer' ruft folgende Methode + DECL_LINK( DoIdleJobs, Timer * ); + // der CharTimer ruft diese Methode + DECL_LINK( DoUpdateAllCharts, Timer * ); + DECL_LINK( DoUpdateModifiedOLE, Timer * ); + +public: + SwDoc(); + ~SwDoc(); + + SwNodes& GetNodes() { return aNodes; } + const SwNodes& GetNodes() const { return aNodes; } + + DECL_STATIC_LINK( SwDoc, BackgroundDone, SvxBrushItem *); + DECL_LINK(CalcFieldValueHdl, EditFieldInfo*); + + // Links un-/sichtbar in LinkManager einfuegen (gelinkte Bereiche) + sal_Bool IsVisibleLinks() const { return bVisibleLinks; } + void SetVisibleLinks( sal_Bool bFlag ) { bVisibleLinks = bFlag; } + + SvxLinkManager& GetLinkManager() { return *pLinkMgr; } + const SvxLinkManager& GetLinkManager() const { return *pLinkMgr; } + + // erfrage das spezifische Layout + const SwRootFrm* GetRootFrm() const { return pLayout; } + SwRootFrm* GetRootFrm() { return pLayout; } + // der alte muss !! von der Shell geloescht werden !! + void SetRootFrm( SwRootFrm* pNew ) { pLayout = pNew; } + + void StartIdleTimer() { aIdleTimer.Start(); } + void StopIdleTimer() { aIdleTimer.Stop(); } + sal_Bool IsIdleTimerActive() const { return aIdleTimer.IsActive(); } + + sal_Bool IsOLEPrtNotifyPending() const { return bOLEPrtNotifyPending; } + void SetOLEPrtNotifyPending() { bOLEPrtNotifyPending = sal_True; } + void PrtOLENotify( sal_Bool bAll ); //Alle oder nur Markierte + + sal_Bool IsPurgeOLE() const { return bPurgeOLE; } + void SetPurgeOLE( sal_Bool bFlag ) { bPurgeOLE = bFlag; } + + // das Dokument im Browse-Modus anzeigen + void SetBrowseMode( sal_Bool bFlag = sal_True ) { bBrowseMode = bFlag; } + sal_Bool IsBrowseMode() const { return bBrowseMode; } + void SetHTMLMode( sal_Bool bFlag = sal_True ) { bHTMLMode = bFlag; } + sal_Bool IsHTMLMode() const { return bHTMLMode; } + void SetHeadInBrowse( sal_Bool bFlag = sal_True ) { bHeadInBrowse = bFlag; } + sal_Bool IsHeadInBrowse() const { return bHeadInBrowse; } + void SetFootInBrowse( sal_Bool bFlag = sal_True ) { bFootInBrowse = bFlag; } + sal_Bool IsFootInBrowse() const { return bFootInBrowse; } + void SetFrmBeepEnabled( sal_Bool bFlag = sal_True ) { bFrmBeepEnabled = bFlag; } + sal_Bool IsFrmBeepEnabled() const { return bFrmBeepEnabled; } + + void SetGlobalDoc( sal_Bool bFlag = sal_True ) { bIsGlobalDoc = bFlag; } + sal_Bool IsGlobalDoc() const { return bIsGlobalDoc; } + void SetGlblDocSaveLinks( sal_Bool bFlag=sal_True ) { bGlblDocSaveLinks = bFlag; } + sal_Bool IsGlblDocSaveLinks() const { return bGlblDocSaveLinks; } + + void SetLabelDoc( sal_Bool bFlag = sal_True ) { bIsLabelDoc = bFlag; } + sal_Bool IsLabelDoc() const { return bIsLabelDoc; } + + sal_uInt16 GetLinkUpdMode() const; + void SetLinkUpdMode( sal_uInt16 nMode ) { nLinkUpdMode = nMode; } + // nur fuer den Writer, weil dieser das richtige Enum schreiben muss! + sal_uInt16 _GetLinkUpdMode() const { return nLinkUpdMode; } + + inline sal_Bool IsInDtor() const { return bDtor; } + + // SS fuer das Drawing, Model und LayerId's + const SdrModel* GetDrawModel() const { return pDrawModel; } + SdrModel* GetDrawModel() { return pDrawModel; } + sal_Int8 GetHeavenId() const { return nHeaven; } + sal_Int8 GetHellId() const { return nHell; } + sal_Int8 GetControlsId() const { return nControls; } + + // liefert zu allen fliegenden Rahmen die Position im Dokument. + // Wird ein Pam-Pointer uebergeben, muessen die absatzgebundenen + // FlyFrames von der ::com::sun::star::awt::Selection vollstaendig umschlossen sein + // ( Start < Pos < End ) !!! + // (wird fuer die Writer benoetigt) + void GetAllFlyFmts( SwPosFlyFrms& rPosFlyFmts, const SwPaM* = 0, + sal_Bool bDrawAlso = sal_False ) const; + + // dokumentglobale Macros + sal_Bool HasGlobalMacro(sal_uInt16 nEvent) const; + const SvxMacro& GetGlobalMacro(sal_uInt16 nEvent) const; + void SetGlobalMacro(sal_uInt16 nEvent, const SvxMacro&); + sal_Bool DelGlobalMacro(sal_uInt16 nEvent); + const SvxMacroTableDtor& GetMacroTable() const { return *pMacroTable; } + + // Fussnoten Informationen + const SwFtnInfo& GetFtnInfo() const { return *pFtnInfo; } + void SetFtnInfo(const SwFtnInfo& rInfo); + const SwEndNoteInfo& GetEndNoteInfo() const { return *pEndNoteInfo; } + void SetEndNoteInfo(const SwEndNoteInfo& rInfo); + + // Zeilennummerierung + const SwLineNumberInfo& GetLineNumberInfo() const { return *pLineNumberInfo; } + void SetLineNumberInfo(const SwLineNumberInfo& rInfo); + + SwFtnIdxs& GetFtnIdxs() { return *pFtnIdxs; } + const SwFtnIdxs& GetFtnIdxs() const { return *pFtnIdxs; } + // Fussnoten im Bereich aendern + sal_Bool SetCurFtn( const SwPaM& rPam, const String& rNumStr, + sal_uInt16 nNumber, sal_Bool bIsEndNote ); + + // wegen swrtf.cxx und define private public, jetzt hier + SwFlyFrmFmt *MakeFlyFrmFmt (const String &rFmtName, SwFrmFmt *pDerivedFrom); + SwDrawFrmFmt *MakeDrawFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom); + + SwLayouter* GetLayouter() { return pLayouter; } + const SwLayouter* GetLayouter() const { return pLayouter; } + void SetLayouter( SwLayouter* pNew ) { pLayouter = pNew; } + + ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > + Spell(SwPaM&, ::com::sun::star::uno::Reference< + ::com::sun::star::linguistic::XSpellChecker1 > &, + sal_uInt16* pPageCnt, sal_uInt16* pPageSt ) const; + ::com::sun::star::uno::Reference< ::com::sun::star::linguistic::XHyphenatedWord > + Hyphenate( SwPaM *pPam, const Point &rCrsrPos, + sal_uInt16* pPageCnt, sal_uInt16* pPageSt ); + + const SwBookmarks& GetBookmarks() const { return *pBookmarkTbl; } + SwBookmark* MakeBookmark( const SwPaM& rPaM, const KeyCode&, + const String& rName, const String& rShortName, BOOKMARK_TYPE eMark = BOOKMARK); + void DelBookmark( sal_uInt16 nPos ); + void DelBookmark( const String& rName ); + sal_uInt16 FindBookmark( const String& rName ); + // erzeugt einen eindeutigen Namen. Der Name selbst muss vorgegeben + // werden, es wird dann bei gleichen Namen nur durchnumeriert. + void MakeUniqueBookmarkName( String& rNm ); + // Anzahl der ::com::sun::star::text::Bookmarks, gfs. nur "echte" + sal_uInt16 GetBookmarkCnt(sal_Bool bBkmrk = sal_False) const; + SwBookmark& GetBookmark( sal_uInt16, sal_Bool bBkmrk = sal_False); + + // Textbaustein Dokument? + void SetGlossDoc( sal_Bool bGlssDc = sal_True ) { bGlossDoc = bGlssDc; } + sal_Bool IsGlossDoc() const { return bGlossDoc; } + sal_Bool IsInsOnlyTextGlossary() const { return bInsOnlyTxtGlssry; } + + //Bei Formataenderungen muss das zu Fuss gerufen werden! + void SetModified(); + void ResetModified(); + sal_Bool IsModified() const { return bModified; } //Dokumentaenderungen? + + sal_Bool IsInCallModified() const { return bInCallModified; } + void SetUndoNoResetModified() { nUndoSavePos = USHRT_MAX; } + sal_Bool IsUndoNoResetModified() const { return USHRT_MAX == nUndoSavePos; } + + //Die neuen (hoffentlich bestaendigen) Schnittstellen fuer alles, + //was mit dem Layout zu tun hat. + SwFrmFmt *MakeLayoutFmt( RndStdIds eRequest, + SwFrmFmt* = 0, + const SfxItemSet* pSet = 0 ); + // JP 08.05.98: fuer Flys muss jetzt diese Schnittstelle benutzt + // werden. pAnchorPos muss gesetzt sein, wenn keine + // Seitenbindung vorliegt UND der ::com::sun::star::chaos::Anchor nicht schon + // im FlySet/FrmFmt mit gueltiger CntntPos gesetzt ist + SwFlyFrmFmt* MakeFlySection( RndStdIds eAnchorType, + const SwPosition* pAnchorPos, + const SfxItemSet* pSet = 0, + SwFrmFmt *pParent = 0 ); + SwFlyFrmFmt* MakeFlyAndMove( const SwPaM& rPam, const SfxItemSet& rSet, + const SwSelBoxes* pSelBoxes = 0, + SwFrmFmt *pParent = 0 ); + + void DelLayoutFmt( SwFrmFmt *pFmt ); + SwFrmFmt *CopyLayoutFmt( const SwFrmFmt& rSrc, + const SwFmtAnchor& rNewAnchor, + sal_Bool bSetTxtFlyAtt = sal_True, sal_Bool bMakeFrms = sal_True ); + void CopyWithFlyInFly( const SwNodeRange& rRg, + const SwNodeIndex& rInsPos, + sal_Bool bMakeNewFrms = sal_True, + sal_Bool bDelRedlines = sal_True, + sal_Bool bCopyFlyAtFly = sal_False ) const; + sal_Bool IsInHeaderFooter( const SwNodeIndex& rIdx ) const; + + sal_Bool SetFlyFrmAttr( SwFrmFmt& rFlyFmt, SfxItemSet& rSet ); + sal_Bool SetFrmFmtToFly( SwFrmFmt& rFlyFmt, SwFrmFmt& rNewFmt, + SfxItemSet* pSet = 0, sal_Bool bKeepOrient = sal_False ); + + // Abstakt fuellen + void Summary( SwDoc* pExtDoc, sal_uInt8 nLevel, sal_uInt8 nPara, sal_Bool bImpress ); + + /* Verwaltet SwDoc::nLinkCt, sollte (paarig!) von allen benutzt werden, + * die einen Pointer auf dieses Dokument halten, denn wenn Remove() 0 + * liefert, wird das Dokument zerstoert! Oder anders: Jeder bei dem + * Remove() 0 liefert, muss das Dokument zerstoeren. + */ + sal_Int8 AddLink() { return nLinkCt++; } + sal_Int8 RemoveLink() { return nLinkCt ? --nLinkCt : nLinkCt; } + sal_Int8 GetLinkCnt() const { return nLinkCt; } + + // UndoHistory am Dokument pflegen + // bei Save, SaveAs, Create wird UndoHistory zurueckgesetzt ??? + void DoUndo(sal_Bool bUn = sal_True) { bUndo = bUn; } + sal_Bool DoesUndo() const { return bUndo; } + // Zusammenfassen von Kontinuierlichen Insert/Delete/Overwrite von + // Charaktern. Default ist ::com::sun::star::sdbcx::Group-Undo. + void DoGroupUndo(sal_Bool bUn = sal_True) { bGroupUndo = bUn; } + sal_Bool DoesGroupUndo() const { return bGroupUndo; } + + // macht rueckgaengig: + // 0 letzte Aktion, sonst Aktionen bis zum Start der Klammerung nUndoId + // In rUndoRange wird der restaurierte Bereich gesetzt. + sal_Bool Undo( SwUndoIter& ); + // setzt Undoklammerung auf, nUndoId kommt von der UI-Seite + sal_uInt16 StartUndo( sal_uInt16 nUndoId = 0 ); + // schliesst Klammerung der nUndoId + sal_uInt16 EndUndo( sal_uInt16 nUndoId = 0 ); + // loescht die gesamten UndoObjecte ( fuer Methoden die am Nodes + // Array drehen ohne entsprechendes Undo !!) + void DelAllUndoObj(); + // liefert die Id der letzten undofaehigen Aktion zurueck + // oder USHRT_MAX + // fuellt ggf. VARARR mit ::com::sun::star::sdbcx::User-UndoIds + sal_uInt16 GetUndoIds( String* pStr = 0, SwUndoIds *pUndoIds = 0) const; + // gibt es Klammerung mit der Id? + sal_Bool HasUndoId(sal_uInt16 nId) const; + // die drei folgenden Methoden werden beim Undo und nur dort + // benoetigt. Sollten sonst nicht aufgerufen werden. + const SwNodes* GetUndoNds() const { return &aUndoNodes; } + + // bei einstufigem Undo muss die History und das Undo-Array geloescht + // werden. Dabei ist aber zu beachten, das nur vollstaendige Gruppen + // geloescht werden koennen. + // Sind beide FLAGS auf sal_False, kann erfragt werden, ob sich in der + // History eine offene Gruppe befindet. ( return = sal_True ) + // bDelHisory = sal_True: loesche die Undo-History + // bDelUndoNds = sal_True: loesche das Undo-Nodes-Arary + sal_Bool DelUndoGroups( sal_Bool bDelUndoNds=sal_True, sal_Bool bDelHistory=sal_True ); + SwUndo* RemoveLastUndo( sal_uInt16 nUndoId ); + + // abfragen/setzen der Anzahl von wiederherstellbaren Undo-Actions + static sal_uInt16 GetUndoActionCount() { return nUndoActions; } + static void SetUndoActionCount( sal_uInt16 nNew ) { nUndoActions = nNew; } + + // Redo + // wiederholt + sal_Bool Redo( SwUndoIter& ); + // liefert die Id der letzten Redofaehigen Aktion zurueck + // fuellt ggf. VARARR mit RedoIds + sal_uInt16 GetRedoIds( String* pStr = 0, SwUndoIds *pRedoIds = 0) const; + + // Repeat + // wiederholt + sal_Bool Repeat( SwUndoIter&, sal_uInt16 nRepeatCnt = 1 ); + // liefert die Id der letzten Repeatfaehigen Aktion zurueck + // fuellt ggf. VARARR mit RedoIds + sal_uInt16 GetRepeatIds( String* pStr = 0, SwUndoIds *pRedoIds = 0) const; + + /* Felder */ + const SwFldTypes *GetFldTypes() const { return pFldTypes; } + SwFieldType *InsertFldType(const SwFieldType &); + SwFieldType *GetSysFldType( const sal_uInt16 eWhich ) const; + SwFieldType* GetFldType(sal_uInt16 nResId, const String& rName) const; + void RemoveFldType(sal_uInt16 nFld); + void UpdateFlds( SfxPoolItem* pNewHt = 0, sal_Bool bCloseDB = sal_False ); + void InsDeletedFldType( SwFieldType & ); + sal_Bool RenameUserFields(const String& rOldName, const String& rNewName); + + // rufe das Update der Expression Felder auf; alle Ausdruecke werden + // neu berechnet. + void UpdateRefFlds( SfxPoolItem* pHt = 0); + void UpdateTblFlds( SfxPoolItem* pHt = 0); + void UpdateExpFlds( SwTxtFld* pFld = 0, sal_Bool bUpdateRefFlds = sal_True ); + void UpdateUsrFlds(); + void UpdatePageFlds( SfxPoolItem* ); + void LockExpFlds() { ++nLockExpFld; } + void UnlockExpFlds() { if( nLockExpFld ) --nLockExpFld; } + sal_Bool IsExpFldsLocked() const { return 0 != nLockExpFld; } + SwDocUpdtFld& GetUpdtFlds() const { return *pUpdtFlds; } + sal_Bool SetFieldsDirty( sal_Bool b, const SwNode* pChk = 0, sal_uInt32 nLen = 0 ); + + void SetFixFields( sal_Bool bOnlyTimeDate = sal_False, + const DateTime* pNewDateTime = 0 ); + + sal_uInt16 GetFldUpdateFlags() const; + void SetFldUpdateFlags( sal_uInt16 eMode ) { nFldUpdMode = eMode; } + // nur fuer den Writer, weil dieser das richtige Enum schreiben muss! + sal_uInt16 _GetFldUpdateFlags() const { return nFldUpdMode; } + + void ChangeAuthorityData(const SwAuthEntry* pNewData); + + // Zustaende ueber Ladezustand + // frueher DocInfo + // + sal_Bool IsPageNums() const { return bPageNums; } + sal_Bool IsLoaded() const { return bLoaded; } + sal_Bool IsUpdateExpFld() const { return bUpdateExpFld; } + sal_Bool IsNewDoc() const { return bNewDoc; } + + void SetPageNums(sal_Bool b = sal_True) { bPageNums = b; } + void SetNewDoc(sal_Bool b = sal_True) { bNewDoc = b; } + void SetUpdateExpFldStat(sal_Bool b = sal_True) { bUpdateExpFld = b; } + void SetLoaded(sal_Bool b = sal_True) { bLoaded = b; } + + // Setze im Calculator alle SetExpresion Felder, die bis zur + // angegebenen Position (Node [ + ::com::sun::star::ucb::Content]) gueltig sind. Es kann + // eine erzeugte Liste aller Felder mit uebergegeben werden. + // (ist die Adresse != 0, und der Pointer == 0 wird eine neue + // Liste returnt.) + void FldsToCalc( SwCalc& rCalc, sal_uInt32 nLastNd = ULONG_MAX, + sal_uInt16 nLastCntnt = USHRT_MAX ); + void FldsToCalc( SwCalc& rCalc, const _SetGetExpFld& rToThisFld ); + void FldsToExpand( SwHash**& ppTbl, sal_uInt16& rTblSize, + const _SetGetExpFld& rToThisFld ); + sal_Bool IsNewFldLst() const { return bNewFldLst; } + void SetNewFldLst( sal_Bool bFlag = sal_True ) { bNewFldLst = bFlag; } + void InsDelFldInFldLst( sal_Bool bIns, const SwTxtFld& rFld ); + + /* Datenbank && DB-Manager */ + void SetNewDBMgr( SwNewDBMgr* pNewMgr ) { pNewDBMgr = pNewMgr; } + SwNewDBMgr* GetNewDBMgr() const { return pNewDBMgr; } + void ChangeDBFields( const SvStringsDtor& rOldNames, + const String& rNewName ); + void SetInitDBFields(sal_Bool b); + // Von Feldern verwendete Datenbanken herausfinden + void GetAllUsedDB( SvStringsDtor& rDBNameList, + const SvStringsDtor* pAllDBNames = 0 ); + + void ChgDBName( const String& rNewName ); + String GetDBName(); + const String& GetDBDesc(); + const String& _GetDBDesc() const { return aDBName; } + + + // Kopieren eines Bereiches im oder in ein anderes Dokument ! + // Die Position kann auch im Bereich liegen !! + sal_Bool Copy( SwPaM&, SwPosition& ) const; // in ndcopy.cxx + + // Loesche die Section, in der der Node steht. + void DeleteSection( SwNode *pNode ); + + sal_Bool Delete( SwPaM& ); //loeschen eines Bereiches + sal_Bool DelFullPara( SwPaM& ); //loeschen gesamter Absaetze + sal_Bool DeleteAndJoin( SwPaM& ); //komplett loeschen eines Bereiches + + sal_Bool Move( SwPaM&, SwPosition&, SwMoveFlags = DOC_MOVEDEFAULT ); //verschieben eines Bereiches + sal_Bool Move( SwNodeRange&, SwNodeIndex&, + SwMoveFlags = DOC_MOVEDEFAULT ); // verschieben ganzer Nodes + sal_Bool MoveAndJoin( SwPaM&, SwPosition&, SwMoveFlags = DOC_MOVEDEFAULT ); //verschieben eines Bereiches + //Ueberschreiben eines einzelnen Zeichens. rRg.Start() bezeichnet + //den Node und die Position in dem Node, an der eingefuegt wird, + sal_Bool Overwrite( const SwPaM &rRg, sal_Unicode c ); + //Ueberschreiben eines Strings in einem bestehenden Textnode. + sal_Bool Overwrite(const SwPaM &rRg, const String& rStr ); + //Einfuegen eines einzelnen Zeichens. rRg.Start() bezeichnet + //den Node und die Position in dem Node, an der eingefuegt wird. + sal_Bool Insert(const SwPaM &rRg, sal_Unicode c ); + //Einfuegen eines Strings in einen bestehenden + //Textnode. Der Text wird kopiert. + sal_Bool Insert( const SwPaM &rRg, const String &, + sal_Bool bHintExpand = sal_True ); + + //Einfuegen einer Grafik, Formel. Die XXXX werden kopiert. + SwFlyFrmFmt* Insert(const SwPaM &rRg, + const String& rGrfName, + const String& rFltName, + const Graphic* pGraphic = 0, + const SfxItemSet* pFlyAttrSet = 0, + const SfxItemSet* pGrfAttrSet = 0, + SwFrmFmt* = 0 ); + // austauschen einer Grafik (mit Undo) + void ReRead( SwPaM&, const String& rGrfName, const String& rFltName, + const Graphic* pGraphic ); + + //Einfuegen eines DrawObjectes. Das Object muss bereits im DrawModel + // angemeldet sein. + SwDrawFrmFmt* Insert( const SwPaM &rRg, + SdrObject& rDrawObj, + const SfxItemSet* pFlyAttrSet = 0, + SwFrmFmt* = 0 ); + String GetUniqueGrfName() const; + + //Einfuegen von OLE-Objecten. + SwFlyFrmFmt* Insert( const SwPaM &rRg, SvInPlaceObject *, + const SfxItemSet* pFlyAttrSet = 0, + const SfxItemSet* pGrfAttrSet = 0, + SwFrmFmt* = 0 ); + String GetUniqueOLEName() const; + + void GrfToOle( const SwPaM &rRg, SvInPlaceObject * ); + void OleToGrf( const SwPaM &rRg, const Graphic *pGrf ); + + // ein bischen wa fuer die benannten FlyFrames + String GetUniqueFrameName() const; + void SetFlyName( SwFlyFrmFmt& rFmt, const String& rName ); + const SwFlyFrmFmt* FindFlyByName( const String& rName, sal_Int8 nNdTyp = 0 ) const; + + void GetGrfNms( const SwFlyFrmFmt& rFmt, String* pGrfName, + String* pFltName ) const; + + // setze bei allen Flys ohne Namen einen gueltigen (Wird von den Readern + // nach dem Einlesen gerufen ) + void SetAllUniqueFlyNames(); + + //Aufspalten eines Nodes an rPos (nur fuer den TxtNode implementiert) + sal_Bool SplitNode(const SwPosition &rPos, sal_Bool bChkTableStart = sal_False ); + sal_Bool AppendTxtNode( SwPosition& rPos ); // nicht const! + + // Ersetz einen selektierten Bereich in einem TextNode mit dem + // String. Ist fuers Suchen&Ersetzen gedacht. + // bRegExpRplc - ersetze Tabs (\\t) und setze den gefundenen String + // ein ( nicht \& ) + // z.B.: Fnd: "zzz", Repl: "xx\t\\t..&..\&" + // --> "xx\t<Tab>..zzz..&" + sal_Bool Replace( SwPaM& rPam, const String& rNewStr, + sal_Bool bRegExpRplc = sal_False ); + + /* + * Einfuegen eines Attributs. Erstreckt sich rRg ueber + * mehrere Nodes, wird das Attribut aufgespaltet, sofern + * dieses Sinn macht. Nodes, in denen dieses Attribut keinen + * Sinn macht, werden ignoriert. In vollstaendig in der + * Selektion eingeschlossenen Nodes wird das Attribut zu + * harter Formatierung, in den anderen (Text-)Nodes wird das + * Attribut in das Attributearray eingefuegt. Bei einem + * Zeichenattribut wird ein "leerer" Hint eingefuegt, + * wenn keine Selektion + * vorliegt; andernfalls wird das Attribut als harte + * Formatierung dem durch rRg.Start() bezeichneten Node + * hinzugefuegt. Wenn das Attribut nicht eingefuegt werden + * konnte, liefert die Methode sal_False. + */ + sal_Bool Insert( const SwPaM &rRg, const SfxPoolItem&, sal_uInt16 nFlags = 0 ); + sal_Bool Insert( const SwPaM &rRg, const SfxItemSet&, sal_uInt16 nFlags = 0 ); + + //Zuruecksetzen der Attribute; es werden alle TxtHints und bei + //vollstaendiger Selektion harte Formatierung (AUTO-Formate) entfernt + void ResetAttr(const SwPaM &rRg, sal_Bool bTxtAttr = sal_True, + const SvUShortsSort* = 0 ); + void RstTxtAttr(const SwPaM &rRg, BOOL bInclRefToxMark = FALSE ); + + // Setze das Attribut im angegebenen Format. Ist Undo aktiv, wird + // das alte in die Undo-History aufgenommen + void SetAttr( const SfxPoolItem&, SwFmt& ); + void SetAttr( const SfxItemSet&, SwFmt& ); + + // Setze das Attribut als neues default Attribut in diesem Dokument. + // Ist Undo aktiv, wird das alte in die Undo-History aufgenommen + void SetDefault( const SfxPoolItem& ); + void SetDefault( const SfxItemSet& ); + + // Erfrage das Default Attribut in diesem Dokument. + const SfxPoolItem& GetDefault( sal_uInt16 nFmtHint ) const; + // TextAttribute nicht mehr aufspannen lassen + sal_Bool DontExpandFmt( const SwPosition& rPos, sal_Bool bFlag = sal_True ); + + /* Formate */ + const SwFrmFmts* GetFrmFmts() const { return pFrmFmtTbl; } + SwFrmFmts* GetFrmFmts() { return pFrmFmtTbl; } + const SwCharFmts* GetCharFmts() const { return pCharFmtTbl;} + + /* LayoutFormate (Rahmen, DrawObjecte), mal const mal nicht */ + const SwSpzFrmFmts* GetSpzFrmFmts() const { return pSpzFrmFmtTbl; } + SwSpzFrmFmts* GetSpzFrmFmts() { return pSpzFrmFmtTbl; } + + const SwFrmFmt *GetDfltFrmFmt() const { return pDfltFrmFmt; } + SwFrmFmt *GetDfltFrmFmt() { return pDfltFrmFmt; } + const SwFrmFmt *GetEmptyPageFmt() const { return pEmptyPageFmt; } + SwFrmFmt *GetEmptyPageFmt() { return pEmptyPageFmt; } + const SwFrmFmt *GetColumnContFmt() const{ return pColumnContFmt; } + SwFrmFmt *GetColumnContFmt() { return pColumnContFmt; } + const SwCharFmt *GetDfltCharFmt() const { return pDfltCharFmt;} + SwCharFmt *GetDfltCharFmt() { return pDfltCharFmt;} + + SwFrmFmt *MakeFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom); + void DelFrmFmt( SwFrmFmt *pFmt ); + SwFrmFmt* FindFrmFmtByName( const String& rName ) const + { return (SwFrmFmt*)FindFmtByName( (SvPtrarr&)*pFrmFmtTbl, rName ); } + SwFrmFmt* FindSpzFrmFmtByName( const String& rName ) const + { return (SwFrmFmt*)FindFmtByName( (SvPtrarr&)*pSpzFrmFmtTbl, rName ); } + + SwCharFmt *MakeCharFmt(const String &rFmtName, SwCharFmt *pDerivedFrom); + void DelCharFmt(sal_uInt16 nFmt); + void DelCharFmt(SwCharFmt* pFmt); + SwCharFmt* FindCharFmtByName( const String& rName ) const + { return (SwCharFmt*)FindFmtByName( (SvPtrarr&)*pCharFmtTbl, rName ); } + + /* Formatcollections (Vorlagen) */ + // TXT + const SwTxtFmtColl* GetDfltTxtFmtColl() const { return pDfltTxtFmtColl; } + const SwTxtFmtColls *GetTxtFmtColls() const { return pTxtFmtCollTbl; } + SwTxtFmtColl *MakeTxtFmtColl( const String &rFmtName, + SwTxtFmtColl *pDerivedFrom ); + SwConditionTxtFmtColl* MakeCondTxtFmtColl( const String &rFmtName, + SwTxtFmtColl *pDerivedFrom ); + void DelTxtFmtColl(sal_uInt16 nFmt); + void DelTxtFmtColl( SwTxtFmtColl* pColl ); + sal_Bool SetTxtFmtColl( const SwPaM &rRg, SwTxtFmtColl *pFmt, + sal_Bool bReset = sal_True); + SwTxtFmtColl* FindTxtFmtCollByName( const String& rName ) const + { return (SwTxtFmtColl*)FindFmtByName( (SvPtrarr&)*pTxtFmtCollTbl, rName ); } + + // GRF + const SwGrfFmtColl* GetDfltGrfFmtColl() const { return pDfltGrfFmtColl; } + const SwGrfFmtColls *GetGrfFmtColls() const { return pGrfFmtCollTbl; } + SwGrfFmtColl *MakeGrfFmtColl(const String &rFmtName, + SwGrfFmtColl *pDerivedFrom); + void DelGrfFmtColl(sal_uInt16 nFmt); + void DelGrfFmtColl( SwGrfFmtColl* pColl ); + SwGrfFmtColl* FindGrfFmtCollByName( const String& rName ) const + { return (SwGrfFmtColl*)FindFmtByName( (SvPtrarr&)*pGrfFmtCollTbl, rName ); } + + // Tabellen-Formate + const SwFrmFmts* GetTblFrmFmts() const { return pTblFrmFmtTbl; } + SwFrmFmts* GetTblFrmFmts() { return pTblFrmFmtTbl; } + sal_uInt16 GetTblFrmFmtCount( sal_Bool bUsed ) const; + SwFrmFmt& GetTblFrmFmt(sal_uInt16 nFmt, sal_Bool bUsed ) const; + SwTableFmt* MakeTblFrmFmt(const String &rFmtName, SwFrmFmt *pDerivedFrom); + void DelTblFrmFmt( SwTableFmt* pFmt ); + SwTableFmt* FindTblFmtByName( const String& rName, sal_Bool bAll = sal_False ) const; + + //Rahmenzugriff + //iterieren ueber Flys - fuer Basic-Collections + sal_uInt16 GetFlyCount(FlyCntType eType = FLYCNTTYPE_ALL) const; + SwFrmFmt* GetFlyNum(sal_uInt16 nIdx, FlyCntType eType = FLYCNTTYPE_ALL); + + + // kopiere die Formate in die eigenen Arrays und returne diese + SwFrmFmt *CopyFrmFmt ( const SwFrmFmt& ); + SwCharFmt *CopyCharFmt( const SwCharFmt& ); + SwTxtFmtColl* CopyTxtColl( const SwTxtFmtColl& rColl ); + SwGrfFmtColl* CopyGrfColl( const SwGrfFmtColl& rColl ); + + // ersetze alle Formate mit denen aus rSource + void ReplaceStyles( SwDoc& rSource ); + + // Gebe die "Auto-Collection" mit der Id zurueck. Existiert + // sie noch nicht, dann erzuege sie + // Ist der String-Pointer definiert, dann erfrage nur die + // Beschreibung der Attribute, !! es legt keine Vorlage an !! + SwTxtFmtColl* GetTxtCollFromPool( sal_uInt16 nId, String* pDescription = 0, + SfxItemPresentation ePres = SFX_ITEM_PRESENTATION_COMPLETE, + SfxMapUnit eCoreMetric = SFX_MAPUNIT_TWIP, + SfxMapUnit ePresMetric = SFX_MAPUNIT_TWIP ); + // return das geforderte automatische Format - Basis-Klasse ! + SwFmt* GetFmtFromPool( sal_uInt16 nId, String* pDescription = 0, + SfxItemPresentation ePres = SFX_ITEM_PRESENTATION_COMPLETE, + SfxMapUnit eCoreMetric = SFX_MAPUNIT_TWIP, + SfxMapUnit ePresMetric = SFX_MAPUNIT_TWIP ); + // returne das geforderte automatische Format + SwFrmFmt* GetFrmFmtFromPool( sal_uInt16 nId, String* pDescription = 0 ) + { return (SwFrmFmt*)GetFmtFromPool( nId, pDescription ); } + SwCharFmt* GetCharFmtFromPool( sal_uInt16 nId, String* pDescription = 0 ) + { return (SwCharFmt*)GetFmtFromPool( nId, pDescription ); } + // returne die geforderte automatische Seiten-Vorlage + SwPageDesc* GetPageDescFromPool( sal_uInt16 nId, String* pDescription = 0, + SfxItemPresentation ePres = SFX_ITEM_PRESENTATION_COMPLETE, + SfxMapUnit eCoreMetric = SFX_MAPUNIT_TWIP, + SfxMapUnit ePresMetric = SFX_MAPUNIT_TWIP ); + SwNumRule* GetNumRuleFromPool( sal_uInt16 nId, String* pDescription = 0, + SfxItemPresentation ePres = SFX_ITEM_PRESENTATION_COMPLETE, + SfxMapUnit eCoreMetric = SFX_MAPUNIT_TWIP, + SfxMapUnit ePresMetric = SFX_MAPUNIT_TWIP ); + + // pruefe, ob diese "Auto-Collection" in Dokument schon/noch + // benutzt wird + sal_Bool IsPoolTxtCollUsed( sal_uInt16 nId ) const; + sal_Bool IsPoolFmtUsed( sal_uInt16 nId ) const; + sal_Bool IsPoolPageDescUsed( sal_uInt16 nId ) const; + sal_Bool IsPoolNumRuleUsed( sal_uInt16 nId ) const; + + // erfrage ob die Absatz-/Zeichen-/Rahmen-/Seiten - Vorlage benutzt wird + sal_Bool IsUsed( const SwModify& ) const; + sal_Bool IsUsed( const SwNumRule& ) const; + + // ist der Name ein Pool-Vorlagen-Name, returne seine ID, + // sonst USHRT_MAX + sal_uInt16 GetPoolId( const String& rName, SwGetPoolIdFromName ) const; + + const SvStringsDtor& GetTextNmArray() const + { return pTextNmArray ? *pTextNmArray : *NewTextNmArray(); } + const SvStringsDtor& GetListsNmArray() const + { return pListsNmArray ? *pListsNmArray : *NewListsNmArray(); } + const SvStringsDtor& GetExtraNmArray() const + { return pExtraNmArray ? *pExtraNmArray : *NewExtraNmArray(); } + const SvStringsDtor& GetRegisterNmArray() const + { return pRegisterNmArray ? *pRegisterNmArray : *NewRegisterNmArray(); } + const SvStringsDtor& GetDocNmArray() const + { return pDocNmArray ? *pDocNmArray : *NewDocNmArray(); } + const SvStringsDtor& GetHTMLNmArray() const + { return pHTMLNmArray ? *pHTMLNmArray : *NewHTMLNmArray(); } + const SvStringsDtor& GetFrmFmtNmArray() const + { return pFrmFmtNmArray ? *pFrmFmtNmArray : *NewFrmFmtNmArray(); } + const SvStringsDtor& GetChrFmtNmArray() const + { return pChrFmtNmArray ? *pChrFmtNmArray : *NewChrFmtNmArray(); } + const SvStringsDtor& GetHTMLChrFmtNmArray() const + { return pHTMLChrFmtNmArray ? *pHTMLChrFmtNmArray : *NewHTMLChrFmtNmArray(); } + const SvStringsDtor& GetPageDescNmArray() const + { return pPageDescNmArray ? *pPageDescNmArray : *NewPageDescNmArray(); } + const SvStringsDtor& GetNumRuleNmArray() const + { return pNumRuleNmArray ? *pNumRuleNmArray : *NewNumRuleNmArray(); } + + // erfrage zu einer PoolId den Namen (steht im poolfmt.cxx) + static String& GetPoolNm( sal_uInt16 nId, String& rFillNm ); + + // setze den Namen der neu geladenen Dokument-Vorlage + sal_uInt16 SetDocPattern( const String& rPatternName ); + // gebe die Anzahl von geladenen Dok-VorlagenNamen zurueck. + // !! Die nicht mehr benutzten sind 0-Pointer !! + sal_uInt16 GetDocPatternCnt() const { return aPatternNms.Count(); } + // gebe den Dok-VorlagenNamen zurueck. !!! Kann auch 0 sein !!! + String* GetDocPattern( sal_uInt16 nPos ) const { return aPatternNms[nPos]; } + // loeche die nicht mehr benutzten Pattern-Namen aus dem Array. + + // alle nicht mehr referenzierten Namen werden durch 0-Pointer + // ersetzt. Diese Positionen koennen wieder vergeben werden. + void ReOrgPatternHelpIds(); + + + // Loesche alle nicht referenzierten FeldTypen + void GCFieldTypes(); // impl. in docfld.cxx + + // akt. Dokument mit Textbausteindokument verbinden/erfragen + void SetGlossaryDoc( SwDoc* pDoc ) { pGlossaryDoc = pDoc; } + SwDoc* GetGlossaryDoc() const { return pGlossaryDoc; } + // jetzt mit einem verkappten Reader/Writer/Dokument + + // travel over PaM Ring + sal_Bool InsertGlossary( SwTextBlocks& rBlock, const String& rEntry, + SwPaM& rPaM, SwCrsrShell* pShell = 0); + + String GetCurWord(SwPaM&); + + // JobSetup und Freunde + SfxPrinter* GetPrt( sal_Bool bCreate ) const + { if( !bCreate || pPrt ) return pPrt; else return _GetPrt(); } + SfxPrinter* GetPrt() const { return pPrt; } + inline void _SetPrt( SfxPrinter *pP ) { pPrt = pP; } + void SetPrt( SfxPrinter *pP ); + const JobSetup* GetJobsetup() const; + void SetJobsetup( const JobSetup& rJobSetup ); + + // Dokument - Info + // legt sie auf jedenfall an! + const SfxDocumentInfo* GetInfo(); + // kann auch 0 sein !!! + const SfxDocumentInfo* GetpInfo() const { return pSwgInfo; } + + // setze ueber die DocShell in den entsp. Storage-Stream. Hier wird + // jetzt die DocInfo verwaltet. Fuer die Felder ist am Doc eine Kopie + // der Info, um einen schnellen Zugriff zu ermoeglichen. + // (impl. in docsh2.cxx) + void SetInfo( const SfxDocumentInfo& rInfo ); + // die DocInfo hat siche geaendert (Notify ueber die DocShell) + // stosse die entsp. Felder zum Updaten an. + void DocInfoChgd( const SfxDocumentInfo& rInfo ); + + // Dokument - Statistics + inline const SwDocStat &GetDocStat() const { return *pDocStat; } + void SetDocStat( const SwDocStat& rStat ); + void UpdateDocStat( SwDocStat& rStat, sal_uInt16 nNumPages ); + + //PageDescriptor-Schnittstelle + sal_uInt16 GetPageDescCnt() const { return aPageDescs.Count(); } + const SwPageDesc& GetPageDesc( sal_uInt16 i ) const { return *aPageDescs[i]; } + SwPageDesc* FindPageDescByName( const String& rName, + sal_uInt16* pPos = 0 ) const; + + // kopiere den gesamten PageDesc - ueber Dokumentgrenzen und "tief"! + // optional kann das kopieren der PoolFmtId, -HlpId verhindert werden + void CopyPageDesc( const SwPageDesc& rSrcDesc, SwPageDesc& rDstDesc, + sal_Bool bCopyPoolIds = sal_True ); + + // kopiere die Kopzeile (mit dem Inhalt!) aus dem SrcFmt + // ins DestFmt ( auch ueber Doc grenzen hinaus!) + void CopyHeader( const SwFrmFmt& rSrcFmt, SwFrmFmt& rDestFmt ) + { _CopyPageDescHeaderFooter( sal_True, rSrcFmt, rDestFmt ); } + // kopiere die Fusszeile (mit dem Inhalt!) aus dem SrcFmt + // ins DestFmt ( auch ueber Doc grenzen hinaus!) + void CopyFooter( const SwFrmFmt& rSrcFmt, SwFrmFmt& rDestFmt ) + { _CopyPageDescHeaderFooter( sal_False, rSrcFmt, rDestFmt ); } + + //fuer Reader + SwPageDesc& _GetPageDesc( sal_uInt16 i ) const { return *aPageDescs[i]; } + void ChgPageDesc( sal_uInt16 i, const SwPageDesc& ); + void DelPageDesc( sal_uInt16 i ); + sal_uInt16 MakePageDesc( const String &rName, const SwPageDesc* pCpy = 0 ); + + // Methoden fuer die Verzeichnisse: + // - Verzeichnismarke einfuegen loeschen travel + sal_uInt16 GetCurTOXMark( const SwPosition& rPos, SwTOXMarks& ) const; + void Delete( SwTOXMark* pTOXMark ); + const SwTOXMark& GotoTOXMark( const SwTOXMark& rCurTOXMark, + SwTOXSearch eDir, sal_Bool bInReadOnly ); + + // - Verzeichnis einfuegen, und bei Bedarf erneuern + const SwTOXBaseSection* InsertTableOf( const SwPosition& rPos, + const SwTOXBase& rTOX, + const SfxItemSet* pSet = 0, + sal_Bool bExpand = sal_False ); + const SwTOXBaseSection* InsertTableOf( sal_uInt32 nSttNd, sal_uInt32 nEndNd, + const SwTOXBase& rTOX, + const SfxItemSet* pSet = 0 ); + const SwTOXBase* GetCurTOX( const SwPosition& rPos ) const; + const SwAttrSet& GetTOXBaseAttrSet(const SwTOXBase& rTOX) const; + + sal_Bool DeleteTOX( const SwTOXBase& rTOXBase, sal_Bool bDelNodes = sal_False ); + String GetUniqueTOXBaseName( const SwTOXType& rType, + const String* pChkStr = 0 ) const; + + sal_Bool SetTOXBaseName(const SwTOXBase& rTOXBase, const String& rName); + void SetTOXBaseProtection(const SwTOXBase& rTOXBase, sal_Bool bProtect); + + // nach einlesen einer Datei alle Verzeichnisse updaten + void SetUpdateTOX( sal_Bool bFlag = sal_True ) { bUpdateTOX = bFlag; } + sal_Bool IsUpdateTOX() const { return bUpdateTOX; } + + const String& GetTOIAutoMarkURL() const {return sTOIAutoMarkURL;} + void SetTOIAutoMarkURL(const String& rSet) {sTOIAutoMarkURL = rSet;} + void ApplyAutoMark(); + + sal_Bool IsInReading() const { return bInReading; } + + // - Verzeichnis-Typen verwalten + sal_uInt16 GetTOXTypeCount( TOXTypes eTyp ) const; + const SwTOXType* GetTOXType( TOXTypes eTyp, sal_uInt16 nId ) const; + sal_Bool DeleteTOXType( TOXTypes eTyp, sal_uInt16 nId ); + const SwTOXType* InsertTOXType( const SwTOXType& rTyp ); + const SwTOXTypes& GetTOXTypes() const { return *pTOXTypes; } + + const SwTOXBase* GetDefaultTOXBase( TOXTypes eTyp, sal_Bool bCreate = sal_False ); + void SetDefaultTOXBase(const SwTOXBase& rBase); + + // - Schluessel fuer die Indexverwaltung + sal_uInt16 GetTOIKeys( SwTOIKeyType eTyp, SvStringsSort& rArr ) const; + + // Sortieren Tabellen Text + sal_Bool SortTbl(const SwSelBoxes& rBoxes, const SwSortOptions&); + sal_Bool SortText(const SwPaM&, const SwSortOptions&); + + // korrigiere die im Dokument angemeldeten SwPosition-Objecte, + // wie z.B. die ::com::sun::star::text::Bookmarks oder die Verzeichnisse. + // JP 22.06.95: ist bMoveCrsr gesetzt, verschiebe auch die Crsr + + // Setzt alles in rOldNode auf rNewPos + Offset + void CorrAbs( const SwNodeIndex& rOldNode, const SwPosition& rNewPos, + const xub_StrLen nOffset = 0, sal_Bool bMoveCrsr = sal_False ); + // Setzt alles im Bereich von [rStartNode, rEndNode] nach rNewPos + void CorrAbs( const SwNodeIndex& rStartNode, const SwNodeIndex& rEndNode, + const SwPosition& rNewPos, sal_Bool bMoveCrsr = sal_False ); + // Setzt alles im Bereich von rRange nach rNewPos + void CorrAbs( const SwPaM& rRange, const SwPosition& rNewPos, + sal_Bool bMoveCrsr = sal_False ); + // Setzt alles in rOldNode auf relative Pos + void CorrRel( const SwNodeIndex& rOldNode, const SwPosition& rNewPos, + const xub_StrLen nOffset = 0, sal_Bool bMoveCrsr = sal_False ); + + // GliederungsRegeln erfragen / setzen + const SwNumRule* GetOutlineNumRule() const { return pOutlineRule; } + void SetOutlineNumRule( const SwNumRule& rRule ); + // Gliederung - hoch-/runterstufen + sal_Bool OutlineUpDown( const SwPaM& rPam, short nOffset = 1 ); + // Gliederung - hoch-/runtermoven + sal_Bool MoveOutlinePara( const SwPaM& rPam, short nOffset = 1); + // zu diesem Gliederungspunkt + sal_Bool GotoOutline( SwPosition& rPos, const String& rName ) const; + // die Aenderungen an den Gliederungsvorlagen in die OutlineRule uebernehmen + void SetOutlineLSpace( sal_uInt8 nLevel, short nFirstLnOfst, sal_uInt16 nLSpace ); + + // setzt, wenn noch keine Numerierung, sonst wird geaendert + // arbeitet mit alten und neuen Regeln, nur Differenzen aktualisieren + void SetNumRule( const SwPaM&, const SwNumRule&, + sal_Bool bSetAbsLSpace = sal_True ); + // ab hier neu starten lassen oder den Start wieder aufheben + void SetNumRuleStart( const SwPosition& rPos, sal_Bool bFlag = sal_True ); + void SetNodeNumStart( const SwPosition& rPos, sal_uInt16 nStt = USHRT_MAX ); + + SwNumRule* GetCurrNumRule( const SwPosition& rPos ) const; + SwNumRuleTbl& GetNumRuleTbl() { return *pNumRuleTbl; } + const SwNumRuleTbl& GetNumRuleTbl() const { return *pNumRuleTbl; } + sal_uInt16 MakeNumRule( const String &rName, const SwNumRule* pCpy = 0 ); + sal_uInt16 FindNumRule( const String& rName ) const; + SwNumRule* FindNumRulePtr( const String& rName ) const; + // loeschen geht nur, wenn die ::com::sun::star::chaos::Rule niemand benutzt! + sal_Bool DelNumRule( const String& rName ); + String GetUniqueNumRuleName( const String* pChkStr = 0, sal_Bool bAutoNum = sal_True ) const; + void UpdateNumRule( const String& rName, sal_uInt32 nUpdPos ); + void UpdateNumRule(); // alle invaliden Updaten + void ChgNumRuleFmts( const SwNumRule& rRule ); + sal_Bool ReplaceNumRule( const SwPosition& rPos, const String& rOldRule, + const String& rNewRule ); + + // zum naechsten/vorhergehenden Punkt auf gleicher Ebene + sal_Bool GotoNextNum( SwPosition&, sal_Bool bOverUpper = sal_True, + sal_uInt8* pUpper = 0, sal_uInt8* pLower = 0 ); + sal_Bool GotoPrevNum( SwPosition&, sal_Bool bOverUpper = sal_True, + sal_uInt8* pUpper = 0, sal_uInt8* pLower = 0 ); + + // Absaetze ohne Numerierung, aber mit Einzuegen + sal_Bool NoNum( const SwPaM& ); + // Loeschen, Splitten der Aufzaehlungsliste + sal_Bool DelNumRules( const SwPaM& ); + // Hoch-/Runterstufen + sal_Bool NumUpDown( const SwPaM&, sal_Bool bDown = sal_True ); + // Bewegt selektierte Absaetze (nicht nur Numerierungen) + // entsprechend des Offsets. (negativ: zum Doc-Anf.) + sal_Bool MoveParagraph( const SwPaM&, long nOffset = 1, sal_Bool bIsOutlMv = sal_False ); + // No-/Numerierung ueber Delete/Backspace ein/abschalten + sal_Bool NumOrNoNum( const SwNodeIndex& rIdx, sal_Bool bDel = sal_False, + sal_Bool bOutline = sal_False ); + // Animation der Grafiken stoppen + void StopNumRuleAnimations( OutputDevice* ); + + // fuege eine neue Tabelle auf der Position rPos ein. (es + // wird vor dem Node eingefuegt !!) + //JP 28.10.96: + // fuer AutoFormat bei der Eingabe: dann muessen die Spalten + // auf die vordefinierten Breite gesetzt werden. Im Array stehen die + // Positionen der Spalten!! (nicht deren Breite!) + const SwTable* InsertTable( const SwPosition& rPos, sal_uInt16 nRows, + sal_uInt16 nCols, SwHoriOrient eAdjust, + sal_uInt16 nInsert = HEADLINE_NO_BORDER, + const SwTableAutoFmt* pTAFmt = 0, + const SvUShorts* pColArr = 0 ); + + // steht der Index in einer Tabelle, dann returne den TableNode sonst 0 + SwTableNode* IsIdxInTbl( const SwNodeIndex& rIdx ); + inline const SwTableNode* IsIdxInTbl( const SwNodeIndex& rIdx ) const; + + // erzeuge aus dem makierten Bereich eine ausgeglichene Tabelle + const SwTable* TextToTable( const SwPaM& rRange, sal_Unicode cCh, + SwHoriOrient eAdjust, + sal_uInt16 nInsert = HEADLINE_NO_BORDER, + const SwTableAutoFmt* = 0 ); + // erzeuge aus der Tabelle wieder normalen Text + sal_Bool TableToText( const SwTableNode* pTblNd, sal_Unicode cCh ); + // einfuegen von Spalten/Zeilen in der Tabelle + sal_Bool InsertCol( const SwCursor& rCursor, + sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True ); + sal_Bool InsertCol( const SwSelBoxes& rBoxes, + sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True ); + sal_Bool InsertRow( const SwCursor& rCursor, + sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True ); + sal_Bool InsertRow( const SwSelBoxes& rBoxes, + sal_uInt16 nCnt = 1, sal_Bool bBehind = sal_True ); + // loeschen von Spalten/Zeilen in der Tabelle + sal_Bool DeleteRowCol( const SwSelBoxes& rBoxes ); + sal_Bool DeleteRow( const SwCursor& rCursor ); + sal_Bool DeleteCol( const SwCursor& rCursor ); + // teilen / zusammenfassen von Boxen in der Tabelle + sal_Bool SplitTbl( const SwSelBoxes& rBoxes, sal_Bool bVert = sal_True, sal_uInt16 nCnt=1 ); + // returnt den enum TableMergeErr + sal_uInt16 MergeTbl( SwPaM& rPam ); + String GetUniqueTblName() const; + sal_Bool IsInsTblFormatNum() const; + sal_Bool IsInsTblChangeNumFormat() const; + sal_Bool IsInsTblAlignNum() const; + + // aus der FEShell wg.. Undo und bModified + void GetTabCols( SwTabCols &rFill, const SwCursor* pCrsr, + const SwCellFrm* pBoxFrm = 0 ) const; + void SetTabCols( const SwTabCols &rNew, sal_Bool bCurRowOnly, + const SwCursor* pCrsr, const SwCellFrm* pBoxFrm = 0 ); + + // Direktzugriff fuer Uno + void SetTabCols(SwTable& rTab, const SwTabCols &rNew, SwTabCols &rOld, + const SwTableBox *pStart, sal_Bool bCurRowOnly); + + void SetHeadlineRepeat( SwTable &rTable, sal_Bool bSet ); + // AutoFormat fuer die Tabelle/TabellenSelection + sal_Bool SetTableAutoFmt( const SwSelBoxes& rBoxes, const SwTableAutoFmt& rNew ); + // Erfrage wie attributiert ist + sal_Bool GetTableAutoFmt( const SwSelBoxes& rBoxes, SwTableAutoFmt& rGet ); + // setze das TabelleAttribut Undo auf: + void AppendUndoForAttrTable( const SwTable& rTbl ); + // setze die Spalten/Zeilen/ZTellen Breite/Hoehe + sal_Bool SetColRowWidthHeight( SwTableBox& rAktBox, sal_uInt16 eType, + SwTwips nAbsDiff, SwTwips nRelDiff ); + SwTableBoxFmt* MakeTableBoxFmt(); + SwTableLineFmt* MakeTableLineFmt(); + // teste ob die Box ein numerischen Wert darstellt und aender dann ggfs. + // das Format der Box + void ChkBoxNumFmt( SwTableBox& rAktBox, sal_Bool bCallUpdate ); + void SetTblBoxFormulaAttrs( SwTableBox& rBox, const SfxItemSet& rSet ); + void ClearBoxNumAttrs( const SwNodeIndex& rNode ); + + sal_Bool CopyTblInTbl( const SwTable& rSrcTable, SwTable& rDestTbl, + const SwNodeIndex& rBoxIdx ); + sal_Bool InsCopyOfTbl( SwPosition& rInsPos, const SwSelBoxes& rBoxes, + const SwTable* pCpyTbl = 0, sal_Bool bCpyName = sal_False, + sal_Bool bCorrPos = sal_False ); + + sal_Bool UnProtectCells( const String& rTblName ); + sal_Bool UnProtectCells( const SwSelBoxes& rBoxes ); + sal_Bool UnProtectTbls( const SwPaM& rPam ); + sal_Bool HasTblAnyProtection( const SwPosition* pPos, + const String* pTblName = 0, + sal_Bool* pFullTblProtection = 0 ); + + // Tabelle an der Position in der GrundLine aufsplitten, sprich eine + // neue Tabelle erzeugen. + sal_Bool SplitTable( const SwPosition& rPos, sal_uInt16 eMode = 0, + sal_Bool bCalcNewSize = sal_False ); + // und die Umkehrung davon. rPos muss in der Tabelle stehen, die bestehen + // bleibt. Das Flag besagt ob die aktuelle mit der davor oder dahinter + // stehenden vereint wird. + sal_Bool MergeTable( const SwPosition& rPos, sal_Bool bWithPrev = sal_True, + sal_uInt16 nMode = 0 ); + + // Raeume die Umrandung innerhalb der Tabelle ein wenig auf (doppelte + // an einer Kante erkennen und beseitigen) + sal_Bool GCTableBorder( const SwPosition& rPos ); + // Charts der angegebenen Tabelle zum Update bewegen + void UpdateCharts( const String &rName ) const; + // update all charts, for that exists any table + void UpdateAllCharts() { DoUpdateAllCharts( 0 ); } + // Tabelle wird umbenannt und aktualisiert die Charts + void SetTableName( SwFrmFmt& rTblFmt, const String &rNewName ); + + // returne zum Namen die im Doc gesetzte Referenz + const SwFmtRefMark* GetRefMark( const String& rName ) const; + // returne die RefMark per Index - fuer Uno + const SwFmtRefMark* GetRefMark( sal_uInt16 nIndex ) const; + // returne die Namen aller im Doc gesetzten Referenzen. + // Ist der ArrayPointer 0 dann returne nur, ob im Doc. eine RefMark + // gesetzt ist + sal_uInt16 GetRefMarks( SvStringsDtor* = 0 ) const; + + //Einfuegen einer Beschriftung - falls ein FlyFormat erzeugt wird, so + // returne dieses. + SwFlyFrmFmt* InsertLabel( const SwLabelType eType, const String &rTxt, + const sal_Bool bBefore, const sal_uInt16 nId, const sal_uInt32 nIdx, + const sal_Bool bCpyBrd = sal_True ); + SwFlyFrmFmt* InsertDrawLabel( const String &rTxt, const sal_uInt16 nId, + SdrObject& rObj ); + + // erfrage den Attribut Pool + const SwAttrPool& GetAttrPool() const { return aAttrPool; } + SwAttrPool& GetAttrPool() { return aAttrPool; } + + // suche ueber das Layout eine EditShell und ggfs. eine ViewShell + SwEditShell* GetEditShell( ViewShell** ppSh = 0 ) const; + + // OLE 2.0-Benachrichtung + inline void SetOle2Link(const Link& rLink) {aOle2Link = rLink;} + inline const Link& GetOle2Link() const {return aOle2Link;} + + // SS fuer Bereiche + SwSection* Insert( const SwPaM& rRange, const SwSection& rNew, + const SfxItemSet* pAttr = 0, sal_Bool bUpdate = sal_True ); + sal_uInt16 IsInsRegionAvailable( const SwPaM& rRange, + const SwNode** ppSttNd = 0 ) const; + SwSection* GetCurrSection( const SwPosition& rPos ) const; + SwSectionFmts& GetSections() { return *pSectionFmtTbl; } + const SwSectionFmts& GetSections() const { return *pSectionFmtTbl; } + SwSectionFmt *MakeSectionFmt( SwSectionFmt *pDerivedFrom ); + void DelSectionFmt( SwSectionFmt *pFmt, sal_Bool bDelNodes = sal_False ); + void ChgSection( sal_uInt16 nSect, const SwSection&, const SfxItemSet* = 0 ); + String GetUniqueSectionName( const String* pChkStr = 0 ) const; + + // Passwort fuer geschuetzte Bereiche erfragen/setzen + void ChgSectionPasswd( const String& sNew ); + const String& GetSectionPasswd() const { return sSectionPasswd; } + + // Pointer auf die SfxDocShell vom Doc, kann 0 sein !!! + SwDocShell* GetDocShell() { return pDocShell; } + const SwDocShell* GetDocShell() const { return pDocShell; } + void SetDocShell( SwDocShell* pDSh ); + + // falls beim Kopieren von OLE-Nodes eine DocShell angelegt werden muss, + // dann MUSS der Ref-Pointer besetzt sein!!!! + SvEmbeddedObjectRef* GetRefForDocShell() { return pDocShRef; } + void SetRefForDocShell( SvEmbeddedObjectRef* p ) { pDocShRef = p; } + + // fuer die TextBausteine - diese habe nur ein SvPersist zur + // Verfuegung + SvPersist* GetPersist() const; + void SetPersist( SvPersist* ); + + // Pointer auf den Storage des SfxDocShells, kann 0 sein !!! + SvStorage* GetDocStorage(); + + // abfrage/setze Flag, ob das Dokument im asynchronen Laden ist + sal_Bool IsInLoadAsynchron() const { return bInLoadAsynchron; } + void SetInLoadAsynchron( sal_Bool bFlag ) { bInLoadAsynchron = bFlag; } + + // SS fuers Linken von Dokumentteilen + sal_Bool GetData( const String& rItem, SvData& rData ) const; + sal_Bool ChangeData( const String& rItem, const SvData& rData ); + SvPseudoObject* CreateHotLink( const String& rItem ); + // erzeuge um das zu Servende Object eine Selektion + sal_Bool SelectServerObj( const String& rStr, SwPaM*& rpPam, + SwNodeRange*& rpRange ) const; + // erfage alle zu servendenen Objecte + sal_uInt16 GetServerObjects( SvStrings& rStrArr ) const; + + // fuer Drag&Move: ( z.B. RefMarks "verschieben" erlauben ) + sal_Bool IsCopyIsMove() const { return bCopyIsMove; } + void SetCopyIsMove( sal_Bool bFlag ) { bCopyIsMove = bFlag; } + + // fuers Draw-Undo: Aktionen auf Flys wollen wir selbst behandeln + sal_Bool IsNoDrawUndoObj() const { return bNoDrawUndoObj; } + void SetNoDrawUndoObj( sal_Bool bFlag ) { bNoDrawUndoObj = bFlag; } + SwDrawContact* GroupSelection( SdrView& ); + void UnGroupSelection( SdrView& ); + sal_Bool DeleteSelection( SwDrawView& ); + + // Invalidiert OnlineSpell-WrongListen + void SpellItAgainSam( sal_Bool bInvalid, sal_Bool bOnlyWrong ); + void InvalidateAutoCompleteFlag(); + + SdrModel* _MakeDrawModel(); + inline SdrModel* MakeDrawModel() + { return GetDrawModel() ? GetDrawModel() : _MakeDrawModel(); } + void SetCalcFieldValueHdl(Outliner* pOutliner); + + // erfrage ob die ::com::sun::star::util::URL besucht war. Uebers Doc, falls nur ein ::com::sun::star::text::Bookmark + // angegeben ist. Dann muss der Doc. Name davor gesetzt werden! + sal_Bool IsVisitedURL( const String& rURL ) const; + + // speicher die akt. Werte fuer die automatische Aufnahme von Ausnahmen + // in die Autokorrektur + void SetAutoCorrExceptWord( SwAutoCorrExceptWord* pNew ); + SwAutoCorrExceptWord* GetAutoCorrExceptWord() { return pACEWord; } + + const SwFmtINetFmt* FindINetAttr( const String& rName ) const; + + // rufe ins dunkle Basic, mit evt. Return String + sal_Bool ExecMacro( const SvxMacro& rMacro, String* pRet = 0, SbxArray* pArgs = 0 ); + // rufe ins dunkle Basic/JavaScript + sal_uInt16 CallEvent( sal_uInt16 nEvent, const SwCallMouseEvent& rCallEvent, + sal_Bool bChkPtr = sal_False, SbxArray* pArgs = 0, + const Link* pCallBack = 0 ); + + // linken Rand ueber Objectleiste einstellen (aenhlich dem Stufen von + // Numerierungen), optional kann man "um" den Offset stufen oder "auf" + // die Position gestuft werden (bModulus = sal_True) + void MoveLeftMargin( const SwPaM& rPam, sal_Bool bRight = sal_True, + sal_Bool bModulus = sal_True ); + + // Numberformatter erfragen + inline SvNumberFormatter* GetNumberFormatter( sal_Bool bCreate = sal_True ); + inline const SvNumberFormatter* GetNumberFormatter( sal_Bool bCreate = sal_True ) const; + + // loesche den nicht sichtbaren ::com::sun::star::ucb::Content aus dem Document, wie z.B.: + // versteckte Bereiche, versteckte Absaetze + sal_Bool RemoveInvisibleContent(); + // embedded alle lokalen Links (Bereiche/Grafiken) + sal_Bool EmbedAllLinks(); + // erzeuge Anhand der vorgebenen Collection Teildokumente + // falls keine angegeben ist, nehme die Kapitelvorlage der 1. Ebene + sal_Bool GenerateGlobalDoc( const String& rPath, + const SwTxtFmtColl* pSplitColl = 0 ); + sal_Bool GenerateHTMLDoc( const String& rPath, + const SwTxtFmtColl* pSplitColl = 0 ); + + + // alles fuers Redlining + SwRedlineMode GetRedlineMode() const { return eRedlineMode; } + sal_Bool IsRedlineOn() const { return ::IsRedlineOn( eRedlineMode ); } + sal_Bool IsIgnoreRedline() const { return REDLINE_IGNORE & eRedlineMode; } + void SetRedlineMode_intern( sal_uInt16 eMode ) { eRedlineMode = (SwRedlineMode)eMode; } + void SetRedlineMode( sal_uInt16 eMode ); + + const SwRedlineTbl& GetRedlineTbl() const { return *pRedlineTbl; } + sal_Bool AppendRedline( SwRedline* pPtr, sal_Bool bCallDelete = sal_True ); + sal_Bool SplitRedline( const SwPaM& rPam ); + sal_Bool DeleteRedline( const SwPaM& rPam, sal_Bool bSaveInUndo = sal_True, + sal_uInt16 nDelType = USHRT_MAX ); + sal_Bool DeleteRedline( const SwStartNode& rSection, sal_Bool bSaveInUndo = sal_True, + sal_uInt16 nDelType = USHRT_MAX ); + void DeleteRedline( sal_uInt16 nPos ); + sal_uInt16 GetRedlinePos( const SwNode& rNd, sal_uInt16 nType = USHRT_MAX ) const; + void CompressRedlines(); + const SwRedline* GetRedline( const SwPosition& rPos, + sal_uInt16* pFndPos = 0 ) const; + + sal_Bool IsRedlineMove() const { return bIsRedlineMove; } + void SetRedlineMove( sal_Bool bFlag ) { bIsRedlineMove = bFlag; } + + sal_Bool AcceptRedline( sal_uInt16 nPos, sal_Bool bCallDelete = sal_True ); + sal_Bool AcceptRedline( const SwPaM& rPam, sal_Bool bCallDelete = sal_True ); + sal_Bool RejectRedline( sal_uInt16 nPos, sal_Bool bCallDelete = sal_True ); + sal_Bool RejectRedline( const SwPaM& rPam, sal_Bool bCallDelete = sal_True ); + const SwRedline* SelNextRedline( SwPaM& rPam ) const; + const SwRedline* SelPrevRedline( SwPaM& rPam ) const; + + // alle Redline invalidieren, die Darstellung hat sich geaendert + void UpdateRedlineAttr(); + // legt gegebenenfalls einen neuen Author an + sal_uInt16 GetRedlineAuthor(); + // fuer die Reader usw. - neuen Author in die Tabelle eintragen + sal_uInt16 InsertRedlineAuthor( const String& ); + // Kommentar am Redline an der Position setzen + sal_Bool SetRedlineComment( const SwPaM& rPam, const String& rS ); + + // vergleiche zwei Dokument miteinander + long CompareDoc( const SwDoc& rDoc ); + // merge zweier Dokumente + long MergeDoc( const SwDoc& rDoc ); + // setze Kommentar-Text fuers Redline, das dann per AppendRedline + // hereinkommt. Wird vom Autoformat benutzt. 0-Pointer setzt den Modus + // wieder zurueck. Die SequenceNummer ist fuers UI-seitige zusammen- + // fassen von Redlines. + void SetAutoFmtRedlineComment( const String* pTxt, sal_uInt16 nSeqNo = 0 ); + + sal_Bool IsAutoFmtRedline() const { return bIsAutoFmtRedline; } + void SetAutoFmtRedline( sal_Bool bFlag ) { bIsAutoFmtRedline = bFlag; } + + // fuer AutoFormat: mit Undo/Redlining - Behandlung + void SetTxtFmtCollByAutoFmt( const SwPosition& rPos, sal_uInt16 nPoolId, + const SfxItemSet* pSet = 0 ); + void SetFmtItemByAutoFmt( const SwPaM& rPam, const SfxPoolItem& ); + + // !!!NUR fuer die SW-Textblocks!! beachtet kein LAYOUT!!! + void ClearDoc(); // loescht den gesamten Inhalt. + + // erfrage / setze die Daten fuer die PagePreView + const SwPagePreViewPrtData* GetPreViewPrtData() const { return pPgPViewPrtData; } + // wenn der Pointer == 0 ist, dann wird im Doc der Pointer zerstoert, + // ansonsten wird das Object kopiert. + // Der Pointer geht NICHT in den Besitz des Doc's!! + void SetPreViewPrtData( const SwPagePreViewPrtData* pData ); + + // update all modified OLE-Objects. The modification is called over the + // StarOne - Interface --> Bug 67026 + void SetOLEObjModified() + { if( GetRootFrm() ) aOLEModifiedTimer.Start(); } + + // -------------------- Uno - Schnittstellen --------------------------- + const SwUnoCrsrTbl& GetUnoCrsrTbl() const { return *pUnoCrsrTbl; } + SwUnoCrsr* CreateUnoCrsr( const SwPosition& rPos, sal_Bool bTblCrsr = sal_False ); + // -------------------- Uno - Schnittstellen --------------------------- + + // -------------------- FeShell - Schnittstellen ----------------------- + // !!!!! diese gehen immer davon aus, das ein Layout existiert !!!! + sal_Bool ChgAnchor( const SdrMarkList &rMrkList, int eAnchorId, + sal_Bool bSameOnly, sal_Bool bPosCorr ); + + void SetRowHeight( const SwCursor& rCursor, const SwFmtFrmSize &rNew ); + void GetRowHeight( const SwCursor& rCursor, SwFmtFrmSize *& rpSz ) const; + sal_Bool BalanceRowHeight( const SwCursor& rCursor, sal_Bool bTstOnly = sal_True ); + void SetRowBackground( const SwCursor& rCursor, const SvxBrushItem &rNew ); + sal_Bool GetRowBackground( const SwCursor& rCursor, SvxBrushItem &rToFill ) const; + void SetTabBorders( const SwCursor& rCursor, const SfxItemSet& rSet ); + void SetTabLineStyle( const SwCursor& rCursor, + const Color* pColor, sal_Bool bSetLine, + const SvxBorderLine* pBorderLine ); + void GetTabBorders( const SwCursor& rCursor, SfxItemSet& rSet ) const; + void SetBoxAttr( const SwCursor& rCursor, const SfxPoolItem &rNew ); + sal_Bool GetBoxBackground( const SwCursor& rCursor, SvxBrushItem &rToFill ) const; + void SetBoxAlign( const SwCursor& rCursor, sal_uInt16 nAlign ); + sal_uInt16 GetBoxAlign( const SwCursor& rCursor ) const; + void AdjustCellWidth( const SwCursor& rCursor, sal_Bool bBalance = sal_False ); + + int Chainable( const SwFrmFmt &rSource, const SwFrmFmt &rDest ); + int Chain( SwFrmFmt &rSource, const SwFrmFmt &rDest ); + void Unchain( SwFrmFmt &rFmt ); + + // fuers Copy/Move aus der FrmShell + SdrObject* CloneSdrObj( const SdrObject&, sal_Bool bMoveWithinDoc = sal_False, + sal_Bool bInsInPage = sal_True ); + + // + // -------------------- FeShell - Schnittstellen Ende ------------------ + + + // Schnittstelle fuer die TextInputDaten - ( fuer die Texteingabe + // von japanischen/chinesischen Zeichen) + SwExtTextInput* CreateExtTextInput( const SwPaM& rPam ); + void DeleteExtTextInput( SwExtTextInput* pDel ); + SwExtTextInput* GetExtTextInput( const SwNode& rNd, + xub_StrLen nCntntPos = STRING_NOTFOUND) const; + + // Schnistelle fuer den Zugriff auf die AutoComplete-Liste + static SwAutoCompleteWord& GetAutoCompleteWords() { return *pACmpltWords; } + + sal_Bool ContainsMSVBasic() const { return bContains_MSVBasic; } + void SetContainsMSVBasic( sal_Bool bFlag ) { bContains_MSVBasic = bFlag; } + + // ------------------- Zugriff auf Dummy-Member -------------------- + + sal_Bool IsParaSpaceMax() const { return n8Dummy1 & DUMMY_PARASPACEMAX; } + sal_Bool IsParaSpaceMaxAtPages() const { return n8Dummy1 & DUMMY_PARASPACEMAX_AT_PAGES; } + void SetParaSpaceMax( sal_Bool bNew, sal_Bool bAtPages ) + { + if( bNew ) n8Dummy1 |= DUMMY_PARASPACEMAX; else n8Dummy1 &= ~DUMMY_PARASPACEMAX; + if( bAtPages ) n8Dummy1 |= DUMMY_PARASPACEMAX_AT_PAGES; else n8Dummy1 &= ~DUMMY_PARASPACEMAX_AT_PAGES; + } + + void SetULongDummy1( sal_uInt32 n ) { n32Dummy1 = n; } + void SetULongDummy2( sal_uInt32 n ) { n32Dummy2 = n; } + void SetByteDummy1( sal_Int8 n ) { n8Dummy1 = n; } + void SetByteDummy2( sal_Int8 n ) { n8Dummy2 = n; } + void SetStringDummy1( const String& r ) { sDummy1 = r; } + void SetStringDummy2( const String& r ) { sDummy2 = r; } + sal_uInt32 GetULongDummy1() const { return n32Dummy1; } + sal_uInt32 GetULongDummy2() const { return n32Dummy2; } + sal_Int8 GetByteDummy1() const { return n8Dummy1; } + sal_Int8 GetByteDummy2() const { return n8Dummy2; } + const String& GetStringDummy1() const { return sDummy1; } + const String& GetStringDummy2() const { return sDummy2; } + + // call back for API wrapper + SwModify* GetUnoCallBack() const; +}; + + +// Diese Methode wird im Dtor vom SwDoc gerufen und loescht den Cache +// der Konturobjekte +void ClrContourCache(); + + +//------------------ inline impl. --------------------------------- + +inline const SwTableNode* SwDoc::IsIdxInTbl( const SwNodeIndex& rIdx ) const +{ + return ((SwDoc*)this)->IsIdxInTbl( rIdx ); +} + +inline SvNumberFormatter* SwDoc::GetNumberFormatter( sal_Bool bCreate ) +{ + if( bCreate && !pNumberFormatter ) + _CreateNumberFormatter(); + return pNumberFormatter; +} + +inline const SvNumberFormatter* SwDoc::GetNumberFormatter( sal_Bool bCreate ) const +{ + return ((SwDoc*)this)->GetNumberFormatter( bCreate ); +} + + +// ist das NodesArray das normale vom Doc? (nicht das UndoNds, .. ) +// Implementierung steht hier, weil man dazu Doc kennen muss! +inline sal_Bool SwNodes::IsDocNodes() const +{ + return this == &pMyDoc->GetNodes(); +} + + + +#endif //_DOC_HXX diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx new file mode 100644 index 000000000000..d904c90b1cdc --- /dev/null +++ b/sw/inc/docary.hxx @@ -0,0 +1,166 @@ +/************************************************************************* + * + * $RCSfile: docary.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _DOCARY_HXX +#define _DOCARY_HXX + +class SwFieldType; +class SwFrmFmt; +class SwCharFmt; +class SwBookmark; +class SwTOXType; +class SwUndo; +class SwSectionFmt; +class SwNumRule; +class SwRedline; +class SwUnoCrsr; +class SwOLENode; + +#ifndef _SWTYPES_HXX //autogen +#include <swtypes.hxx> +#endif + +#ifndef _SVARRAY_HXX //autogen +#include <svtools/svarray.hxx> +#endif + +typedef SwFieldType* SwFldTypePtr; +#define GROW_FLDTYPES 16 + +//PageDescriptor-Schnittstelle +//typedef SwPageDesc * SwPageDescPtr; +//SV_DECL_PTRARR_DEL(SwPageDescs, SwPageDescPtr,1,1); + +typedef SwFrmFmt* SwFrmFmtPtr; +SV_DECL_PTRARR_DEL(SwFrmFmts,SwFrmFmtPtr,4,4) + +//Spezifische Frameformate (Rahmen, DrawObjecte) +SV_DECL_PTRARR_DEL(SwSpzFrmFmts,SwFrmFmtPtr,0,4) + +typedef SwCharFmt* SwCharFmtPtr; +SV_DECL_PTRARR_DEL(SwCharFmts,SwCharFmtPtr,4,4) + +SV_DECL_PTRARR_DEL( SwFldTypes, SwFldTypePtr, INIT_FLDTYPES, GROW_FLDTYPES ) + +//Bookmarks (nach Dokumentpositionen sortiertes Array) +typedef SwBookmark* SwBookmarkPtr; +SV_DECL_PTRARR_SORT(SwBookmarks, SwBookmarkPtr,0,1) + +typedef SwTOXType* SwTOXTypePtr; +SV_DECL_PTRARR_DEL( SwTOXTypes, SwTOXTypePtr, 0, 1 ) + +// Undo +#define INIT_UNDOS 5 +#define GROW_UNDOS 5 +// Das Array der Undo-History +typedef SwUndo* SwUndoPtr; +SV_DECL_PTRARR_DEL( SwUndos, SwUndoPtr, INIT_UNDOS, GROW_UNDOS ) + +typedef SwSectionFmt* SwSectionFmtPtr; +SV_DECL_PTRARR_DEL(SwSectionFmts,SwSectionFmtPtr,0,4) + + +typedef SwNumRule* SwNumRulePtr; +SV_DECL_PTRARR_DEL( SwNumRuleTbl, SwNumRulePtr, 0, 5 ) + +typedef SwRedline* SwRedlinePtr; +SV_DECL_PTRARR_SORT_DEL( _SwRedlineTbl, SwRedlinePtr, 0, 16 ) + +class SwRedlineTbl : private _SwRedlineTbl +{ +public: + SwRedlineTbl( BYTE nSize = 0, BYTE nG = 16 ) + : _SwRedlineTbl( nSize, nG ) {} + ~SwRedlineTbl() {} + + BOOL SavePtrInArr( SwRedlinePtr p ) { return _SwRedlineTbl::Insert( p ); } + + BOOL Insert( SwRedlinePtr& p, BOOL bIns = TRUE ); + BOOL Insert( SwRedlinePtr& p, USHORT& rInsPos, BOOL bIns = TRUE ); + BOOL InsertWithValidRanges( SwRedlinePtr& p, USHORT* pInsPos = 0 ); + + void Remove( USHORT nP, USHORT nL = 1 ); + void DeleteAndDestroy( USHORT nP, USHORT nL=1 ); + + // suche den naechsten oder vorherigen Redline mit dergleichen Seq.No + // Mit dem Lookahead kann die Suche eingeschraenkt werden. 0 oder + // USHRT_MAX suchen im gesamten Array. + USHORT FindNextOfSeqNo( USHORT nSttPos, USHORT nLookahead = 20 ) const; + USHORT FindPrevOfSeqNo( USHORT nSttPos, USHORT nLookahead = 20 ) const; + USHORT FindNextSeqNo( USHORT nSeqNo, USHORT nSttPos, + USHORT nLookahead = 20 ) const; + USHORT FindPrevSeqNo( USHORT nSeqNo, USHORT nSttPos, + USHORT nLookahead = 20 ) const; + + _SwRedlineTbl::Count; + _SwRedlineTbl::operator[]; + _SwRedlineTbl::GetObject; + _SwRedlineTbl::Seek_Entry; + _SwRedlineTbl::GetPos; +}; + +typedef SwUnoCrsr* SwUnoCrsrPtr; +SV_DECL_PTRARR_DEL( SwUnoCrsrTbl, SwUnoCrsrPtr, 0, 4 ) + +typedef SwOLENode* SwOLENodePtr; +SV_DECL_PTRARR(SwOLENodes,SwOLENodePtr,16,16) + + +#endif //_DOCARY_HXX diff --git a/sw/inc/docfac.hxx b/sw/inc/docfac.hxx new file mode 100644 index 000000000000..d73888366b63 --- /dev/null +++ b/sw/inc/docfac.hxx @@ -0,0 +1,85 @@ +/************************************************************************* + * + * $RCSfile: docfac.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _DOCFAC_HXX +#define _DOCFAC_HXX + +#ifndef _SOLAR_H +#include <tools/solar.h> +#endif + +class SwDoc; + +class SwDocFac +{ +protected: + SwDoc* pDoc; + +public: + SwDocFac( SwDoc *pDoc = 0 ); + ~SwDocFac(); + + // Das Dokument ist nach dem Aufruf von Read(..) angelegt + SwDoc* GetDoc(); + ULONG Count() const; +}; + +#endif + diff --git a/sw/inc/docsh.hxx b/sw/inc/docsh.hxx new file mode 100644 index 000000000000..9c6af7bd89b3 --- /dev/null +++ b/sw/inc/docsh.hxx @@ -0,0 +1,303 @@ +/************************************************************************* + * + * $RCSfile: docsh.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _SWDOCSH_HXX +#define _SWDOCSH_HXX + +#ifndef _TIMER_HXX //autogen +#include <vcl/timer.hxx> +#endif +#ifndef _SFX_OBJFAC_HXX //autogen +#include <sfx2/docfac.hxx> +#endif +#ifndef _SFX_INTERNO_HXX //autogen +#include <sfx2/interno.hxx> +#endif + +#ifndef _SFX_OBJSH_HXX //autogen +#include <sfx2/objsh.hxx> +#endif +#ifndef SW_SWDLL_HXX +#include <swdll.hxx> +#endif +#include "shellid.hxx" + +class SwDoc; +class Sw3Io; +class SfxDocumentInfoDialog; +class SfxStyleSheetBasePool; +class FontList; +class SwView; +class SwWrtShell; +class SwFEShell; +class Reader; +class SwReader; +class SwCrsrShell; +class SwSrcView; +class SfxFileDialog; +class PushButton; +class FixedText; +class SwPaM; + +class SwDocShell: public SfxObjectShell, public SfxInPlaceObject, + public SfxListener +{ + SwDoc* pDoc; // Document + Sw3Io* pIo; // Reader / Writer + SfxStyleSheetBasePool* pBasePool; // Durchreiche fuer Formate + FontList* pFontList; // aktuelle FontListe + + // Nix geht ohne die WrtShell (historische Gruende) + // RuekwaertsPointer auf die View (historische Gruende) + // Dieser gilt solange bis im Activate ein neuer gesetzt wird + // oder dieser im Dtor der View geloescht wird + // + SwView* pView; + SwWrtShell* pWrtShell; + + Timer aFinishedTimer; // Timer fuers ueberpriefen der + // Grafik-Links. Sind alle da, + // dann ist Doc voll. geladen + + SvPersistRef xOLEChildList; // fuers RemoveOLEObjects + + // Methoden fuer den Zugriff aufs Doc + void AddLink(); + void RemoveLink(); + + // Hint abfangen fuer DocInfo + virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); + + // FileIO + virtual BOOL InitNew(SvStorage* pNewStor); + virtual BOOL Load(SvStorage* pStor); + virtual BOOL LoadFrom(SvStorage* pStor); + virtual BOOL ConvertFrom( SfxMedium &rMedium ); + virtual void HandsOff(); + virtual BOOL SaveAs(SvStorage * pNewStor ); + virtual BOOL ConvertTo(SfxMedium &rMedium ); + virtual BOOL SaveCompleted(SvStorage * pNewStor ); + virtual USHORT PrepareClose( BOOL bUI = TRUE, BOOL bForBrowsing = FALSE ); + + // DocInfo dem Doc melden + // + virtual SfxDocumentInfoDialog* CreateDocumentInfoDialog( + Window *pParent, const SfxItemSet &); + // Template-Btn + Window* AddTemplateBtn(SfxFileDialog* pFileDlg); + + // OLE-Geraffel + virtual void Draw( OutputDevice*, const JobSetup&, USHORT); + + // Methoden fuer StyleSheets + USHORT Edit( const String &rName, const String& rParent, USHORT nFamily, + USHORT nMask, BOOL bNew, + BOOL bColumn = FALSE, + SwWrtShell* pActShell = 0, + BOOL bBasic = FALSE ); + USHORT Delete(const String &rName, USHORT nFamily); + USHORT ApplyStyles(const String &rName, USHORT nFamily, SwWrtShell* pShell = 0, + USHORT nMode = 0 ); + USHORT DoWaterCan( const String &rName, USHORT nFamily); + USHORT UpdateStyle(const String &rName, USHORT nFamily, SwWrtShell* pShell = 0); + USHORT MakeByExample(const String &rName, + USHORT nFamily, USHORT nMask, SwWrtShell* pShell = 0); + + void InitDraw(); + void SubInitNew(); // fuer InitNew und HtmlSourceModus + inline void SetWrtShell(SwWrtShell* pShell) + { pWrtShell = pShell; } + + void RemoveOLEObjects(); + + DECL_STATIC_LINK( SwDocShell, IsLoadFinished, void* ); + DECL_LINK( SelTemplateHdl, PushButton * ); + +public: + + // aber selbst implementieren + SFX_DECL_INTERFACE(SW_DOCSHELL); + SFX_DECL_OBJECTFACTORY_DLL(SwDocShell, SW_DLL()); + TYPEINFO(); + + static SfxInterface *_GetInterface() { return _GetInterfaceImpl(); } + + //Das Doc wird fuer SO-Datenaustausch benoetigt! + SwDocShell(SfxObjectCreateMode eMode = SFX_CREATE_MODE_EMBEDDED); + SwDocShell( SwDoc *pDoc, SfxObjectCreateMode eMode = SFX_CREATE_MODE_STANDARD ); + ~SwDocShell(); + + // OLE 2.0-Benachrichtigung + DECL_LINK( Ole2ModifiedHdl, void * ); + + // OLE-Geraffel + virtual void SetVisArea( const Rectangle &rRect ); + virtual Rectangle GetVisArea( USHORT nAspect ) const; + virtual Printer *GetDocumentPrinter(); + virtual void OnDocumentPrinterChanged( Printer * pNewPrinter ); + virtual ULONG GetMiscStatus() const; + + virtual void PrepareReload(); + virtual void SetModified( BOOL = TRUE ); + + // Dispatcher + void Execute(SfxRequest &); + void ExecStyleSheet(SfxRequest&); + void ExecDB(SfxRequest&); + + void GetState(SfxItemSet &); + void StateAlways(SfxItemSet &); + void StateStyleSheet(SfxItemSet&, SwWrtShell* pSh = 0 ); + + // Doc rausreichen aber VORSICHT + inline SwDoc* GetDoc() { return pDoc; } + void UpdateFontList(); + void UpdateChildWindows(); + + // DocumentInfo neu setzen + BOOL SetDocumentInfo(const SfxDocumentInfo& rInfo); + + // globaler IO + virtual BOOL Save(); + + // fuer VorlagenPI + virtual SfxStyleSheetBasePool* GetStyleSheetPool(); + + // Fuer Organizer + virtual BOOL Insert(SfxObjectShell &rSource, + USHORT nSourceIdx1, + USHORT nSourceIdx2, + USHORT nSourceIdx3, + USHORT& nIdx1, + USHORT& nIdx2, + USHORT& nIdx3, + USHORT& nRemovedIdx); + + virtual BOOL Remove(USHORT nIdx1, + USHORT nIdx2 = INDEX_IGNORE, + USHORT nIdx3 = INDEX_IGNORE); + + virtual Bitmap GetStyleFamilyBitmap( SfxStyleFamily eFamily ); + + // View setzen fuer Aktionen ueber Shell + void SetView(SwView* pVw); + const SwView *GetView() const { return pView; } + + // Zugriff auf die zur SwView gehoerige SwWrtShell + SwWrtShell *GetWrtShell() { return pWrtShell; } + const SwWrtShell *GetWrtShell() const { return pWrtShell; } + + // fuer die Core - die kennt die DocShell aber keine WrtShell! + SwFEShell *GetFEShell(); + const SwFEShell *GetFEShell() const + { return ((SwDocShell*)this)->GetFEShell(); } + + + // Fuer Einfuegen Dokument + Reader* StartConvertFrom(SfxMedium& rMedium, SwReader** ppRdr, + SwCrsrShell* pCrsrSh = 0, SwPaM* pPaM = 0); + + // Anforderung der pIo-Struktur fuer den Zugriff auf Substorages + // und Streams + Sw3Io* GetIoSystem() { return pIo; } + + virtual long DdeGetData( const String& rItem, SvData& rData ); + virtual long DdeSetData( const String& rItem, const SvData& rData ); + virtual SvPseudoObject* DdeCreateHotLink( const String& rItem ); + virtual void FillClass( SvGlobalName * pClassName, + ULONG * pClipFormat, + String * pAppName, + String * pLongUserName, + String * pUserName, + long nVersion = SOFFICE_FILEFORMAT_NOW ) const; + virtual void FillRegInfo( SvEmbeddedRegistryInfo * ); + + virtual SvDataMemberObjectRef CreateSnapshot(); + + virtual void LoadStyles( SfxObjectShell& rSource ); + + // Seitenvorlagedialog anzeigen, ggf. auf Spaltenpage + void FormatPage( const String& rPage, + BOOL bColumn = FALSE, + SwWrtShell* pActShell = 0 ); + + // Timer starten fuers ueberpruefen der Grafik-Links. Sind alle + // vollstaendig geladen, dann ist das Doc fertig + void StartLoadFinishedTimer(); + + // eine Uebertragung wird abgebrochen (wird aus dem SFX gerufen) + virtual void CancelTransfers(); + + // Doc aus Html-Source neu laden + void ReloadFromHtml( const String& rStreamName, SwSrcView* pSrcView ); + + // embedded alle lokalen Links (Bereiche/Grafiken) + BOOL EmbedAllLinks(); + + //Activate wait cursor for all windows of this document + //Optionally all dispatcher could be Locked + //Usually locking should be done using the class: SwWaitObject! + void EnterWait( BOOL bLockDispatcher ); + void LeaveWait( BOOL bLockDispatcher ); + + void ToggleBrowserMode(BOOL bOn, SwView* pView = 0); +}; + +#endif diff --git a/sw/inc/docstat.hxx b/sw/inc/docstat.hxx new file mode 100644 index 000000000000..4581e70d9aea --- /dev/null +++ b/sw/inc/docstat.hxx @@ -0,0 +1,90 @@ +/************************************************************************* + * + * $RCSfile: docstat.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _DOCSTAT_HXX +#define _DOCSTAT_HXX + +#ifndef _SOLAR_H +#include <tools/solar.h> +#endif + +/////////////////////////////////////////////////////////////////////////// +// PRODUCT: struct SwInternStat ist nur fuer CORE Interne Statistics und +// hat nichts in einer ProductVersion zu suchen. +/////////////////////////////////////////////////////////////////////////// + +struct SwInternStat; + +struct SwDocStat +{ + USHORT nTbl; + USHORT nGrf; + USHORT nOLE; + ULONG nPage; + ULONG nPara; + ULONG nWord; + ULONG nChar; + BOOL bModified; + SwInternStat* pInternStat; + SwDocStat(); + void Reset(); +}; + +#endif diff --git a/sw/inc/docstyle.hxx b/sw/inc/docstyle.hxx new file mode 100644 index 000000000000..709dda4bcc7b --- /dev/null +++ b/sw/inc/docstyle.hxx @@ -0,0 +1,261 @@ +/************************************************************************* + * + * $RCSfile: docstyle.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _DOCSTYLE_HXX +#define _DOCSTYLE_HXX + +#ifndef _SVSTDARR_HXX +#define _SVSTDARR_STRINGSDTOR +#include <svtools/svstdarr.hxx> +#endif + +#ifndef _SFXSTYLE_HXX //autogen +#include <svtools/style.hxx> +#endif + +#ifndef _SFXITEMSET_HXX //autogen +#include <svtools/itemset.hxx> +#endif + +class SwDoc; +class SwDocStyleSheetPool; +class SwPageDesc; +class SwCharFmt; +class SwTxtFmtColl; +class SwFrmFmt; +class SwNumRule; + +/*-------------------------------------------------------------------- + Beschreibung: Lokale Hilfsklasse + --------------------------------------------------------------------*/ +class SwPoolFmtList : public SvStringsDtor +{ +public: + SwPoolFmtList() {} + void Append( char cChar, const String& rStr ); + void Erase(); +}; + + +/*-------------------------------------------------------------------- + Beschreibung: temp. StyleSheet + --------------------------------------------------------------------*/ +class SwDocStyleSheet : public SfxStyleSheetBase +{ + friend class SwDocStyleSheetPool; + friend class SwStyleSheetIterator; + + SwCharFmt* pCharFmt; + SwTxtFmtColl* pColl; + SwFrmFmt* pFrmFmt; + const SwPageDesc* pDesc; + const SwNumRule* pNumRule; + + SwDoc& rDoc; + SfxItemSet aCoreSet; + + BOOL bPhysical; + + + // leere Huelse zum richtigen StyleSheet (Core) machen + void Create(); + + // den StyleSheet mit Daten fuellen + enum FillStyleType { + FillOnlyName, + FillAllInfo, + FillPhysical + }; + BOOL FillStyleSheet( FillStyleType eFType ); + + +public: + SwDocStyleSheet( SwDoc& rDoc, + const String& rName, + SwDocStyleSheetPool& rPool, + SfxStyleFamily eFam, + USHORT nMask); + + SwDocStyleSheet( const SwDocStyleSheet& ); + virtual ~SwDocStyleSheet(); + + void Reset(); + + void SetMask(USHORT nMsk) { nMask = nMsk; } + void SetFamily(SfxStyleFamily eFam) { nFamily = eFam; } + + BOOL IsPhysical() const { return bPhysical; } + void SetPhysical(BOOL bPhys); + + void SetItemSet(const SfxItemSet& rSet); + + virtual SfxItemSet& GetItemSet(); + virtual const String& GetParent() const; + virtual const String& GetFollow() const; + + virtual ULONG GetHelpId( String& rFile ); + virtual void SetHelpId( const String& r, ULONG nId ); + + // Vorbelegen der member ohne physikalischen Zugriff + // wird vom StyleSheetPool benutzt + // + void PresetName(const String& rName) { aName = rName; } + void PresetNameAndFamily(const String& rName); + void PresetParent(const String& rName){ aParent = rName; } + void PresetFollow(const String& rName){ aFollow = rName; } + + virtual BOOL SetName( const String& rStr); + virtual BOOL SetParent( const String& rStr); + virtual BOOL SetFollow( const String& rStr); + + virtual BOOL HasFollowSupport() const; + virtual BOOL HasParentSupport() const; + virtual BOOL HasClearParentSupport() const; + virtual String GetDescription(); + virtual String GetDescription(SfxMapUnit eUnit); + + SwCharFmt* GetCharFmt(); + SwTxtFmtColl* GetCollection(); + SwFrmFmt* GetFrmFmt(); + const SwPageDesc* GetPageDesc(); + const SwNumRule* GetNumRule(); + void SetNumRule(const SwNumRule& rRule); + + virtual BOOL IsUsed() const; +}; + +/*-------------------------------------------------------------------- + Beschreibung: Iterator fuer den Pool + --------------------------------------------------------------------*/ + +class SwStyleSheetIterator : public SfxStyleSheetIterator, public SfxListener +{ + SwDocStyleSheet aIterSheet; + SwDocStyleSheet aStyleSheet; + SwPoolFmtList aLst; + USHORT nLastPos; + BOOL bFirstCalled; + + void AppendStyleList(const SvStringsDtor& rLst, + BOOL bUsed, + USHORT nSection, + char cType); + +public: + SwStyleSheetIterator( SwDocStyleSheetPool* pBase, + SfxStyleFamily eFam, USHORT n=0xFFFF ); + virtual ~SwStyleSheetIterator(); + + virtual USHORT Count(); + virtual SfxStyleSheetBase *operator[](USHORT nIdx); + virtual SfxStyleSheetBase* First(); + virtual SfxStyleSheetBase* Next(); +#ifndef ENABLEUNICODE + virtual SfxStyleSheetBase* Find(const String& rStr); +#else + virtual SfxStyleSheetBase* Find(const UniString& rStr); +#endif + + virtual void Notify( SfxBroadcaster&, const SfxHint& ); +}; + +/*-------------------------------------------------------------------- + Beschreibung: Pool fuer + --------------------------------------------------------------------*/ + +class SwDocStyleSheetPool : public SfxStyleSheetBasePool +{ + SwDocStyleSheet aStyleSheet; + SwDoc& rDoc; + BOOL bOrganizer : 1; // TRUE: fuer den Organizer + + + virtual SfxStyleSheetBase* Create( const String&, SfxStyleFamily, USHORT nMask); + virtual SfxStyleSheetBase* Create( const SfxStyleSheetBase& ); +public: + SwDocStyleSheetPool( SwDoc&, BOOL bOrganizer = FALSE ); + virtual ~SwDocStyleSheetPool(); + + virtual void Replace( SfxStyleSheetBase& rSource, + SfxStyleSheetBase& rTarget ); + virtual SfxStyleSheetBase& Make(const String&, SfxStyleFamily, USHORT nMask, USHORT nPos = 0xffff); + virtual SfxStyleSheetBase* Find( const String&, SfxStyleFamily eFam, + USHORT n=0xFFFF ); + virtual BOOL SetParent( SfxStyleFamily eFam, const String &rStyle, + const String &rParent ); + + virtual void Erase( SfxStyleSheetBase* pStyle); + void SetItemSet(const SfxItemSet& rSet) { aStyleSheet.SetItemSet(rSet); } + + void SetOrganizerMode( BOOL bMode ) { bOrganizer = bMode; } + BOOL IsOrganizerMode() const { return bOrganizer; } + + virtual SfxStyleSheetIterator* CreateIterator( SfxStyleFamily, + USHORT nMask ); + + SwDoc& GetDoc() const { return rDoc; } + + //Fuer die daemlicheren Compiler +private: + SwDocStyleSheetPool( const SwDocStyleSheetPool& ); +}; + + +#endif diff --git a/sw/inc/docufld.hxx b/sw/inc/docufld.hxx new file mode 100644 index 000000000000..516ebb23a923 --- /dev/null +++ b/sw/inc/docufld.hxx @@ -0,0 +1,818 @@ +/************************************************************************* + * + * $RCSfile: docufld.hxx,v $ + * + * $Revision: 1.1.1.1 $ + * + * last change: $Author: hr $ $Date: 2000-09-18 17:14:25 $ + * + * 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 _DOCUFLD_HXX +#define _DOCUFLD_HXX + +#ifndef _DATE_HXX //autogen +#include <tools/date.hxx> +#endif + +#include "fldbas.hxx" +#include "numrule.hxx" + +class _SetGetExpFlds; +class SwTxtFld; +class SwFrm; + +enum SwAuthorFormat +{ + AF_BEGIN, + AF_NAME = AF_BEGIN, + AF_SHORTCUT, + AF_END, + AF_FIXED = 0x8000 +}; + +/*-------------------------------------------------------------------- + Beschreibung: Untertyp der Dokumentstatistik + --------------------------------------------------------------------*/ + +enum SwDocStatSubType +{ + DS_BEGIN, + DS_PAGE = DS_BEGIN, + DS_PARA, + DS_WORD, + DS_CHAR, + DS_TBL, + DS_GRF, + DS_OLE, + DS_END +}; + +enum SwDocInfoSubType +{ + DI_SUBTYPE_BEGIN, + DI_TITEL = DI_SUBTYPE_BEGIN, + DI_THEMA, + DI_KEYS, + DI_COMMENT, + DI_INFO1, + DI_INFO2, + DI_INFO3, + DI_INFO4, + DI_CREATE, + DI_CHANGE, + DI_PRINT, + DI_DOCNO, + DI_EDIT, + DI_SUBTYPE_END +}; + +enum SwDocInfoExtSubType +{ + DI_SUB_AUTHOR = 0x0100, + DI_SUB_TIME = 0x0200, + DI_SUB_DATE = 0x0300, + DI_SUB_FIXED = 0x1000 +}; + +enum RegInfoFormat // Nur noch zum laden alter Dokumente!!! +{ + RF_AUTHOR, + RF_TIME, + RF_DATE, + RF_ALL +}; + +enum SwPageNumSubType +{ + PG_RANDOM, + PG_NEXT, + PG_PREV +}; + +enum SwExtUserSubType +{ + EU_COMPANY /*EU_FIRMA*/, + EU_FIRSTNAME /*EU_VORNAME*/, + EU_NAME /*EU_NAME*/, + EU_SHORTCUT /*EU_ABK*/, + EU_STREET /*EU_STRASSE*/, + EU_COUNTRY /*EU_LAND*/, + EU_ZIP /*EU_PLZ*/, + EU_CITY /*EU_ORT*/, + EU_TITLE /*EU_TITEL*/, + EU_POSITION /*EU_POS*/, + EU_PHONE_PRIVATE /*EU_TELPRIV*/, + EU_PHONE_COMPANY /*EU_TELFIRMA*/, + EU_FAX, + EU_EMAIL, + EU_STATE, + EU_FATHERSNAME, + EU_APARTMENT +}; + +enum SwJumpEditFormat +{ + JE_FMT_TEXT, + JE_FMT_TABLE, + JE_FMT_FRAME, + JE_FMT_GRAPHIC, + JE_FMT_OLE +}; + +/*-------------------------------------------------------------------- + Beschreibung: Seitennummer + --------------------------------------------------------------------*/ + +class SwPageNumberFieldType : public SwFieldType +{ + SvxExtNumType eNumFormat; + USHORT nNum, nMax; + BOOL bVirtuell; + +public: + SwPageNumberFieldType(); + + String& Expand( ULONG nFmt, short nOff, const String&, String& rRet ) const; + void ChangeExpansion( SwDoc* pDoc, USHORT nNum, USHORT nMax, + BOOL bVirtPageNum, const SvxExtNumType* pNumFmt = 0 ); + inline SvxExtNumType GetNumFormat() const { return eNumFormat; } + virtual SwFieldType* Copy() const; +}; + +/*-------------------------------------------------------------------- + Beschreibung: Seitennummerierung + --------------------------------------------------------------------*/ + +class SwPageNumberField : public SwField +{ + String sUserStr; + USHORT nSubType; + short nOffset; + +public: + SwPageNumberField(SwPageNumberFieldType*, USHORT nSub = PG_RANDOM, + ULONG nFmt = 0, short nOff = 0); + + virtual String Expand() const; + virtual SwField* Copy() const; + + virtual String GetPar2() const; + virtual void SetPar2(const String& rStr); + + virtual USHORT GetSubType() const; + // virtual void SetSubType(USHORT nSub); // OM: entfernt, da unbenoetigt und gefaehrlich + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); + + const String& GetUserString() const { return sUserStr; } + void SetUserString( const String& rS ) { sUserStr = rS; } +}; + +/*-------------------------------------------------------------------- + Beschreibung: Autoren + --------------------------------------------------------------------*/ + +class SwAuthorFieldType : public SwFieldType +{ + SwDoc *pDoc; +public: + SwAuthorFieldType(SwDoc*); + + String Expand(ULONG) const; + virtual SwFieldType* Copy() const; +}; + +/*-------------------------------------------------------------------- + Beschreibung: AutorenFeld + --------------------------------------------------------------------*/ + +class SwAuthorField : public SwField +{ + String aContent; + +public: + SwAuthorField(SwAuthorFieldType*, ULONG nFmt = 0); + + virtual String Expand() const; + virtual SwField* Copy() const; + + inline void SetExpansion(const String& rStr) { aContent = rStr; } + inline const String& GetContent() const { return aContent; } + + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +/*-------------------------------------------------------------------- + Beschreibung: Filename + --------------------------------------------------------------------*/ + +class SwFileNameFieldType : public SwFieldType +{ + SwDoc *pDoc; +public: + SwFileNameFieldType(SwDoc*); + + String Expand(ULONG) const; + virtual SwFieldType* Copy() const; +}; + +/*-------------------------------------------------------------------- + Beschreibung: FileName + --------------------------------------------------------------------*/ + +class SwFileNameField : public SwField +{ + String aContent; + +public: + SwFileNameField(SwFileNameFieldType*, ULONG nFmt = 0); + + virtual String Expand() const; + virtual SwField* Copy() const; + + inline void SetExpansion(const String& rStr) { aContent = rStr; } + inline const String& GetContent() const { return aContent; } + + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +/*-------------------------------------------------------------------- + Beschreibung: TemplName + --------------------------------------------------------------------*/ + +class SwTemplNameFieldType : public SwFieldType +{ + SwDoc *pDoc; +public: + SwTemplNameFieldType(SwDoc*); + + String Expand(ULONG) const; + virtual SwFieldType* Copy() const; +}; + +/*-------------------------------------------------------------------- + Beschreibung: TemplName + --------------------------------------------------------------------*/ + +class SwTemplNameField : public SwField +{ +public: + SwTemplNameField(SwTemplNameFieldType*, ULONG nFmt = 0); + + virtual String Expand() const; + virtual SwField* Copy() const; + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + + +/*-------------------------------------------------------------------- + Beschreibung: Docstatistik + --------------------------------------------------------------------*/ + +class SwDocStatFieldType : public SwFieldType +{ + SwDoc* pDoc; + SvxExtNumType eNumFormat; + +public: + SwDocStatFieldType(SwDoc*); + String Expand(USHORT nSubType, ULONG nFmt) const; + virtual SwFieldType* Copy() const; + + inline SvxExtNumType GetNumFormat() const { return eNumFormat; } + inline void SetNumFormat( SvxExtNumType eFmt ) { eNumFormat = eFmt; } +}; + +/*-------------------------------------------------------------------- + Beschreibung: Dokumentstatistik + --------------------------------------------------------------------*/ + +class SwDocStatField : public SwField +{ + USHORT nSubType; + +public: + SwDocStatField( SwDocStatFieldType*, + USHORT nSubType = 0, ULONG nFmt = 0); + + void ChangeExpansion( const SwFrm* pFrm ); + + virtual String Expand() const; + virtual SwField* Copy() const; + + virtual USHORT GetSubType() const; + virtual void SetSubType(USHORT nSub); + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +/*-------------------------------------------------------------------- + Beschreibung: versteckter Text + --------------------------------------------------------------------*/ + +class SwHiddenTxtFieldType : public SwFieldType +{ + BOOL bHidden; +public: + SwHiddenTxtFieldType(BOOL bSetHidden = TRUE); + + virtual SwFieldType* Copy() const; + + void SetHiddenFlag( BOOL bSetHidden = TRUE ); + inline BOOL GetHiddenFlag() const { return bHidden; } +}; + +/*-------------------------------------------------------------------- + Beschreibung: Versteckter Text + --------------------------------------------------------------------*/ + +class SwHiddenTxtField : public SwField +{ + String aTRUETxt; // Text wenn Bedingung TRUE + String aFALSETxt; // Wenn Bedingung falsch + String aContent; // Ausgewerteter DB-Text + + String aCond; // Bedingung + USHORT nSubType; + + BOOL bCanToggle : 1; // kann das Feld einzeln getoggelt werden? + BOOL bIsHidden : 1; // ist es nicht sichtbar? + BOOL bValid : 1; // DB-Feld evaluiert? + +public: + SwHiddenTxtField( SwHiddenTxtFieldType*, + BOOL bConditional, + const String& rCond, + const String& rTxt, + BOOL bHidden = FALSE, + USHORT nSubType = TYP_HIDDENTXTFLD); + + SwHiddenTxtField( SwHiddenTxtFieldType*, + const String& rCond, + const String& rTrue, + const String& rFalse, + USHORT nSubType = TYP_HIDDENTXTFLD); + + virtual String GetCntnt(BOOL bName = FALSE) const; + virtual String Expand() const; + virtual SwField* Copy() const; + + void Evaluate(SwDoc*); + + inline void SetValue(BOOL bHidden) { bIsHidden = bHidden; } + inline BOOL GetValue() const { return bIsHidden; } + inline BOOL IsConditional() const { return bCanToggle; } + inline BOOL IsValid() const { return bValid; } + String GetColumnName(const String& rName); + String GetDBName(const String& rName, SwDoc *pDoc); + + // Condition + virtual void SetPar1(const String& rStr); + virtual const String& GetPar1() const; + + // True/False - String + virtual void SetPar2(const String& rStr); + virtual String GetPar2() const; + + + virtual USHORT GetSubType() const; + // virtual void SetSubType(USHORT nSub); // OM: entfernt, da unbenoetigt und gefaehrlich + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +/*-------------------------------------------------------------------- + Beschreibung: Feld das zu einer Leerzeile (ohne Hoehe) expandiert + --------------------------------------------------------------------*/ + +class SwHiddenParaFieldType : public SwFieldType +{ +public: + SwHiddenParaFieldType(); + + virtual SwFieldType* Copy() const; +}; + +/*-------------------------------------------------------------------- + Beschreibung: Versteckter Absatz + --------------------------------------------------------------------*/ + +class SwHiddenParaField : public SwField +{ + String aCond; + BOOL bIsHidden:1; +public: + // Direkte Eingabe alten Wert loeschen + SwHiddenParaField(SwHiddenParaFieldType*, const String& rCond); + + virtual String Expand() const; + virtual SwField* Copy() const; + + void SetHidden(BOOL bHidden) { bIsHidden = bHidden; } + BOOL IsHidden() const { return bIsHidden; } + + // Bedingung erfragen/setzen + virtual const String& GetPar1() const; + virtual void SetPar1(const String& rStr); + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + +/*-------------------------------------------------------------------- + Beschreibung: Macro ausfuehren + --------------------------------------------------------------------*/ + +class SwMacroFieldType : public SwFieldType +{ + SwDoc* pDoc; + +public: + SwMacroFieldType(SwDoc*); + + virtual SwFieldType* Copy() const; +}; + +/*-------------------------------------------------------------------- + Beschreibung: Macrofeld + --------------------------------------------------------------------*/ + +class SwMacroField : public SwField +{ + String aMacro; + String aText; + +public: + // Direkte Eingabe alten Wert loeschen + SwMacroField( SwMacroFieldType*, const String& rLibAndName, + const String& rTxt); + + inline const String& GetMacro() const { return aMacro; } + String GetLibName() const; + String GetMacroName() const; + + virtual String GetCntnt(BOOL bName = FALSE) const; + virtual String Expand() const; + virtual SwField* Copy() const; + + // Library und FileName + virtual const String& GetPar1() const; + virtual void SetPar1(const String& rStr); + + // Macrotext + virtual String GetPar2() const; + virtual void SetPar2(const String& rStr); + virtual BOOL QueryValue( com::sun::star::uno::Any& rVal, const String& rProperty ) const; + virtual BOOL PutValue( const com::sun::star::uno::Any& rVal, const String& rProperty ); +}; + + +/*-------------------------------------------------------------------- + Beschreibung: PostIts + --------------------------------------------------------------------*/ + +class SwPostItFieldType : public SwFieldType +{ +public: + SwPostItFieldType(); + + virtual SwFieldType* Copy() const; +}; + +/*-------------------------------------------------------------------- + Beschreibung: PostIt + --------------------------------------------------------------------*/ + +class SwPostItField : public SwField +{ + String sTxt; // die Anmerkung + String sAuthor; // der Author + Date aDate; // Datum ??/Zeit?? der Anmerkung + +public: + SwPostItField( SwPostItFieldType*, + const String& rAuthor, const String& rTxt, const Date& rDate); + + virtual String Expand() const; + virtual SwField* Copy() const; + + inline const Date& GetDate() const { retu |