office-gobmx/sw/inc/expfld.hxx
Jan Holesovsky 5630cca203 Merge commit 'ooo/DEV300_m103'
Conflicts:
	sw/inc/calbck.hxx
	sw/inc/crsrsh.hxx
	sw/inc/dcontact.hxx
	sw/inc/doc.hxx
	sw/inc/docufld.hxx
	sw/inc/editsh.hxx
	sw/inc/expfld.hxx
	sw/inc/fchrfmt.hxx
	sw/inc/fmtcol.hxx
	sw/inc/fmthdft.hxx
	sw/inc/fmtpdsc.hxx
	sw/inc/format.hxx
	sw/inc/frmfmt.hxx
	sw/inc/ndhints.hxx
	sw/inc/ndtxt.hxx
	sw/inc/node.hxx
	sw/inc/numrule.hxx
	sw/inc/paratr.hxx
	sw/inc/swtable.hxx
	sw/inc/unocrsr.hxx
	sw/inc/unofield.hxx
	sw/inc/unoframe.hxx
	sw/inc/unoport.hxx
	sw/inc/unostyle.hxx
	sw/inc/usrfld.hxx
	sw/inc/viewopt.hxx
	sw/inc/viewsh.hxx
	sw/source/core/access/accframebase.cxx
	sw/source/core/access/accmap.cxx
	sw/source/core/access/accnotextframe.cxx
	sw/source/core/access/accpara.cxx
	sw/source/core/access/accpara.hxx
	sw/source/core/attr/calbck.cxx
	sw/source/core/crsr/callnk.cxx
	sw/source/core/crsr/crsrsh.cxx
	sw/source/core/doc/acmplwrd.cxx
	sw/source/core/doc/doc.cxx
	sw/source/core/doc/docdesc.cxx
	sw/source/core/doc/docdraw.cxx
	sw/source/core/doc/docfly.cxx
	sw/source/core/doc/docfmt.cxx
	sw/source/core/doc/doclay.cxx
	sw/source/core/doc/docnew.cxx
	sw/source/core/doc/docnum.cxx
	sw/source/core/doc/doctxm.cxx
	sw/source/core/doc/fmtcol.cxx
	sw/source/core/doc/htmltbl.cxx
	sw/source/core/doc/number.cxx
	sw/source/core/docnode/ndsect.cxx
	sw/source/core/docnode/ndtbl.cxx
	sw/source/core/docnode/node.cxx
	sw/source/core/docnode/node2lay.cxx
	sw/source/core/docnode/section.cxx
	sw/source/core/docnode/swbaslnk.cxx
	sw/source/core/draw/dcontact.cxx
	sw/source/core/draw/dview.cxx
	sw/source/core/edit/autofmt.cxx
	sw/source/core/edit/editsh.cxx
	sw/source/core/edit/edlingu.cxx
	sw/source/core/fields/authfld.cxx
	sw/source/core/fields/dbfld.cxx
	sw/source/core/fields/docufld.cxx
	sw/source/core/fields/expfld.cxx
	sw/source/core/fields/reffld.cxx
	sw/source/core/fields/tblcalc.cxx
	sw/source/core/frmedt/fefly1.cxx
	sw/source/core/frmedt/feshview.cxx
	sw/source/core/frmedt/tblsel.cxx
	sw/source/core/inc/flyfrm.hxx
	sw/source/core/inc/prevwpage.hxx
	sw/source/core/inc/rolbck.hxx
	sw/source/core/inc/txtfrm.hxx
	sw/source/core/layout/atrfrm.cxx
	sw/source/core/layout/findfrm.cxx
	sw/source/core/layout/flowfrm.cxx
	sw/source/core/layout/fly.cxx
	sw/source/core/layout/flycnt.cxx
	sw/source/core/layout/flylay.cxx
	sw/source/core/layout/frmtool.cxx
	sw/source/core/layout/hffrm.cxx
	sw/source/core/layout/pagechg.cxx
	sw/source/core/layout/pagedesc.cxx
	sw/source/core/layout/paintfrm.cxx
	sw/source/core/layout/sectfrm.cxx
	sw/source/core/layout/ssfrm.cxx
	sw/source/core/layout/tabfrm.cxx
	sw/source/core/layout/wsfrm.cxx
	sw/source/core/objectpositioning/tocntntanchoredobjectposition.cxx
	sw/source/core/table/swtable.cxx
	sw/source/core/text/EnhancedPDFExportHelper.cxx
	sw/source/core/text/inftxt.cxx
	sw/source/core/text/porfld.cxx
	sw/source/core/text/txtdrop.cxx
	sw/source/core/text/txtfly.cxx
	sw/source/core/text/txtfrm.cxx
	sw/source/core/text/txtio.cxx
	sw/source/core/text/txttab.cxx
	sw/source/core/tox/tox.cxx
	sw/source/core/txtnode/atrflyin.cxx
	sw/source/core/txtnode/fmtatr2.cxx
	sw/source/core/txtnode/ndtxt.cxx
	sw/source/core/undo/SwUndoPageDesc.cxx
	sw/source/core/undo/undraw.cxx
	sw/source/core/unocore/unochart.cxx
	sw/source/core/unocore/unocoll.cxx
	sw/source/core/unocore/unodraw.cxx
	sw/source/core/unocore/unofield.cxx
	sw/source/core/unocore/unoframe.cxx
	sw/source/core/unocore/unoftn.cxx
	sw/source/core/unocore/unoidx.cxx
	sw/source/core/unocore/unoobj2.cxx
	sw/source/core/unocore/unoparagraph.cxx
	sw/source/core/unocore/unoport.cxx
	sw/source/core/unocore/unoportenum.cxx
	sw/source/core/unocore/unoredline.cxx
	sw/source/core/unocore/unoredlines.cxx
	sw/source/core/unocore/unorefmk.cxx
	sw/source/core/unocore/unosect.cxx
	sw/source/core/unocore/unosett.cxx
	sw/source/core/unocore/unostyle.cxx
	sw/source/core/unocore/unotbl.cxx
	sw/source/core/unocore/unotext.cxx
	sw/source/core/view/viewimp.cxx
	sw/source/core/view/viewpg.cxx
	sw/source/core/view/viewsh.cxx
	sw/source/core/view/vnew.cxx
	sw/source/core/view/vprint.cxx
	sw/source/filter/ww8/rtfexport.cxx
	sw/source/filter/ww8/rtfexport.hxx
	sw/source/filter/ww8/wrtw8nds.cxx
	sw/source/filter/ww8/wrtww8gr.cxx
	sw/source/filter/xml/XMLRedlineImportHelper.cxx
	sw/source/ui/app/apphdl.cxx
	sw/source/ui/app/docsh.cxx
	sw/source/ui/app/docsh2.cxx
	sw/source/ui/app/swmodul1.cxx
	sw/source/ui/config/viewopt.cxx
	sw/source/ui/fldui/fldpage.cxx
	sw/source/ui/uiview/srcview.cxx
	sw/source/ui/uiview/view.cxx
	sw/source/ui/uno/unotxdoc.cxx
	sw/source/ui/vba/wordvbahelper.cxx
	sw/source/ui/wrtsh/wrtsh1.cxx
2011-03-23 17:00:12 +01:00

411 lines
13 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef SW_EXPFLD_HXX
#define SW_EXPFLD_HXX
#include <svl/svarray.hxx>
#include "swdllapi.h"
#include <fldbas.hxx>
#include <cellfml.hxx>
class SfxPoolItem;
class SwTxtNode;
class SwFrm;
struct SwPosition;
class SwTxtFld;
class SwDoc;
class SwFmtFld;
class _SetGetExpFlds;
class SwEditShell;
// Forward declaration: get "BodyTxtNode" for exp.fld in Fly's headers/footers/footnotes.
const SwTxtNode* GetBodyTxtNode( const SwDoc& pDoc, SwPosition& rPos,
const SwFrm& rFrm );
void ReplacePoint(String& sTmpName, sal_Bool bWithCommandType = sal_False);
struct _SeqFldLstElem
{
String sDlgEntry;
sal_uInt16 nSeqNo;
_SeqFldLstElem( const String& rStr, sal_uInt16 nNo )
: sDlgEntry( rStr ), nSeqNo( nNo )
{}
};
SV_DECL_PTRARR_DEL( _SwSeqFldList, _SeqFldLstElem*, 10, 10 )
class SW_DLLPUBLIC SwSeqFldList : public _SwSeqFldList
{
public:
SwSeqFldList() : _SwSeqFldList( 10, 10 ) {}
sal_Bool InsertSort( _SeqFldLstElem* );
sal_Bool SeekEntry( const _SeqFldLstElem& , sal_uInt16* pPos = 0 );
};
class SwGetExpFieldType : public SwValueFieldType
{
public:
SwGetExpFieldType(SwDoc* pDoc);
virtual SwFieldType* Copy() const;
// Overlay, because get-field cannot be changed and therefore
// does not need to be updated. Update at changing of set-values!
protected:
virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew );
};
class SW_DLLPUBLIC SwGetExpField : public SwFormulaField
{
String sExpand;
sal_Bool bIsInBodyTxt;
sal_uInt16 nSubType;
bool bLateInitialization; // #i82544#
virtual String Expand() const;
virtual SwField* Copy() const;
public:
SwGetExpField( SwGetExpFieldType*, const String& rFormel,
sal_uInt16 nSubType = nsSwGetSetExpType::GSE_EXPR, sal_uLong nFmt = 0);
virtual void SetValue( const double& rVal );
virtual void SetLanguage(sal_uInt16 nLng);
inline const String& GetExpStr() const;
inline void ChgExpStr(const String& rExpand);
// Called by formating.
inline sal_Bool IsInBodyTxt() const;
// Set by UpdateExpFlds where node position is known.
inline void ChgBodyTxtFlag( sal_Bool bIsInBody );
// For fields in header/footer/footnotes/flys:
// Only called by formating!!
void ChangeExpansion( const SwFrm&, const SwTxtFld& );
virtual String GetFieldName() const;
// Change formula.
virtual String GetPar2() const;
virtual void SetPar2(const String& rStr);
virtual sal_uInt16 GetSubType() const;
virtual void SetSubType(sal_uInt16 nType);
virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
static sal_uInt16 GetReferenceTextPos( const SwFmtFld& rFmt, SwDoc& rDoc);
// #i82544#
void SetLateInitialization() { bLateInitialization = true;}
};
inline void SwGetExpField::ChgExpStr(const String& rExpand)
{ sExpand = rExpand;}
inline const String& SwGetExpField::GetExpStr() const
{ return sExpand; }
// Called by formating.
inline sal_Bool SwGetExpField::IsInBodyTxt() const
{ return bIsInBodyTxt; }
// Set by UpdateExpFlds where node position is known.
inline void SwGetExpField::ChgBodyTxtFlag( sal_Bool bIsInBody )
{ bIsInBodyTxt = bIsInBody; }
class SwSetExpField;
class SW_DLLPUBLIC SwSetExpFieldType : public SwValueFieldType
{
String sName;
const SwNode* pOutlChgNd;
String sDelim;
sal_uInt16 nType;
sal_uInt8 nLevel;
sal_Bool bDeleted;
protected:
virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew );
public:
SwSetExpFieldType( SwDoc* pDoc, const String& rName,
sal_uInt16 nType = nsSwGetSetExpType::GSE_EXPR );
virtual SwFieldType* Copy() const;
virtual const String& GetName() const;
inline void SetType(sal_uInt16 nTyp);
inline sal_uInt16 GetType() const;
void SetSeqFormat(sal_uLong nFormat);
sal_uLong GetSeqFormat();
sal_Bool IsDeleted() const { return bDeleted; }
void SetDeleted( sal_Bool b ) { bDeleted = b; }
// Overlay, because set-field takes care for its being updated by itself.
inline const String& GetSetRefName() const;
sal_uInt16 SetSeqRefNo( SwSetExpField& rFld );
sal_uInt16 GetSeqFldList( SwSeqFldList& rList );
String MakeSeqName( sal_uInt16 nSeqNo );
// Number sequence fields chapterwise if required.
const String& GetDelimiter() const { return sDelim; }
void SetDelimiter( const String& s ) { sDelim = s; }
sal_uInt8 GetOutlineLvl() const { return nLevel; }
void SetOutlineLvl( sal_uInt8 n ) { nLevel = n; }
void SetChapter( SwSetExpField& rFld, const SwNode& rNd );
// Member only for SwDoc::UpdateExpFld.
// It is needed only at runtime of sequence field types!
const SwNode* GetOutlineChgNd() const { return pOutlChgNd; }
void SetOutlineChgNd( const SwNode* p ) { pOutlChgNd = p; }
virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
};
inline void SwSetExpFieldType::SetType( sal_uInt16 nTyp )
{
nType = nTyp;
EnableFormat( !(nType & (nsSwGetSetExpType::GSE_SEQ|nsSwGetSetExpType::GSE_STRING)));
}
inline sal_uInt16 SwSetExpFieldType::GetType() const
{ return nType; }
inline const String& SwSetExpFieldType::GetSetRefName() const
{ return sName; }
class SW_DLLPUBLIC SwSetExpField : public SwFormulaField
{
String sExpand;
String aPText;
String aSeqText;
sal_Bool bInput;
sal_uInt16 nSeqNo;
sal_uInt16 nSubType;
virtual String Expand() const;
virtual SwField* Copy() const;
public:
SwSetExpField(SwSetExpFieldType*, const String& rFormel, sal_uLong nFmt = 0);
virtual void SetValue( const double& rVal );
inline const String& GetExpStr() const;
inline void ChgExpStr( const String& rExpand );
inline void SetPromptText(const String& rStr);
inline const String& GetPromptText() const;
inline void SetInputFlag(sal_Bool bInp);
inline sal_Bool GetInputFlag() const;
virtual String GetFieldName() const;
virtual sal_uInt16 GetSubType() const;
virtual void SetSubType(sal_uInt16 nType);
inline sal_Bool IsSequenceFld() const;
// Logical number, sequence fields.
inline void SetSeqNumber( sal_uInt16 n ) { nSeqNo = n; }
inline sal_uInt16 GetSeqNumber() const { return nSeqNo; }
// Query name only.
virtual const String& GetPar1() const;
// Query formula.
virtual String GetPar2() const;
virtual void SetPar2(const String& rStr);
virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
};
inline const String& SwSetExpField::GetExpStr() const
{ return sExpand; }
inline void SwSetExpField::ChgExpStr( const String& rExpand )
{ sExpand = rExpand; }
inline void SwSetExpField::SetPromptText(const String& rStr)
{ aPText = rStr; }
inline const String& SwSetExpField::GetPromptText() const
{ return aPText; }
inline void SwSetExpField::SetInputFlag(sal_Bool bInp)
{ bInput = bInp; }
inline sal_Bool SwSetExpField::GetInputFlag() const
{ return bInput; }
inline sal_Bool SwSetExpField::IsSequenceFld() const
{ return 0 != (nsSwGetSetExpType::GSE_SEQ & ((SwSetExpFieldType*)GetTyp())->GetType()); }
class SwInputFieldType : public SwFieldType
{
SwDoc* pDoc;
public:
SwInputFieldType( SwDoc* pDoc );
virtual SwFieldType* Copy() const;
SwDoc* GetDoc() const { return pDoc; }
};
class SW_DLLPUBLIC SwInputField : public SwField
{
String aContent;
String aPText;
String aHelp;
String aToolTip;
sal_uInt16 nSubType;
virtual String Expand() const;
virtual SwField* Copy() const;
public:
// Direct input via dialog; delete old value.
SwInputField(SwInputFieldType*, const String& rContent ,
const String& rPrompt, sal_uInt16 nSubType = 0,
sal_uLong nFmt = 0);
virtual String GetFieldName() const;
// Content
virtual const String& GetPar1() const;
virtual void SetPar1(const String& rStr);
// aPromptText
virtual String GetPar2() const;
virtual void SetPar2(const String& rStr);
virtual String GetHelp() const;
virtual void SetHelp(const String & rStr);
virtual String GetToolTip() const;
virtual void SetToolTip(const String & rStr);
virtual sal_Bool isFormField() const;
virtual sal_uInt16 GetSubType() const;
virtual void SetSubType(sal_uInt16 nSub);
virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
};
/*--------------------------------------------------------------------
Description: Sorted list of input fields and DropDown fields
--------------------------------------------------------------------*/
class SwInputFieldList
{
public:
SwInputFieldList( SwEditShell* pShell, sal_Bool bBuildTmpLst = sal_False );
~SwInputFieldList();
sal_uInt16 Count() const;
SwField* GetField(sal_uInt16 nId);
void GotoFieldPos(sal_uInt16 nId);
void PushCrsr();
void PopCrsr();
// Put all that are new into SortLst for updating. Returns count.
// (For Glossary: only update its input-fields).
// Compare TmpLst with current fields.
sal_uInt16 BuildSortLst();
void RemoveUnselectedFlds();
private:
SwEditShell* pSh;
_SetGetExpFlds* pSrtLst;
SvPtrarr aTmpLst;
};
// Implementation in tblcalc.cxx.
class SwTblFieldType : public SwValueFieldType
{
public:
SwTblFieldType(SwDoc* pDocPtr);
virtual SwFieldType* Copy() const;
};
class SwTblField : public SwValueField, public SwTableFormula
{
String sExpand;
sal_uInt16 nSubType;
virtual String Expand() const;
virtual SwField* Copy() const;
// Search TextNode containing the field.
virtual const SwNode* GetNodeOfFormula() const;
String GetCommand();
public:
SwTblField( SwTblFieldType*, const String& rFormel,
sal_uInt16 nSubType = 0, sal_uLong nFmt = 0);
virtual void SetValue( const double& rVal );
virtual sal_uInt16 GetSubType() const;
virtual void SetSubType(sal_uInt16 nType);
const String& GetExpStr() const { return sExpand; }
void ChgExpStr(const String& rStr) { sExpand = rStr; }
void CalcField( SwTblCalcPara& rCalcPara );
virtual String GetFieldName() const;
// The formula.
virtual String GetPar2() const;
virtual void SetPar2(const String& rStr);
virtual bool QueryValue( com::sun::star::uno::Any& rVal, sal_uInt16 nWhich ) const;
virtual bool PutValue( const com::sun::star::uno::Any& rVal, sal_uInt16 nWhich );
};
#endif // SW_EXPFLD_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */