Files
libreoffice/sw/source/ui/inc/cnttab.hxx
2001-05-29 12:46:19 +00:00

586 lines
18 KiB
C++

/*************************************************************************
*
* $RCSfile: cnttab.hxx,v $
*
* $Revision: 1.3 $
*
* last change: $Author: fme $ $Date: 2001-05-29 13:39:32 $
*
* 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 _CNTTAB_HXX
#define _CNTTAB_HXX
#ifndef _SVX_STDDLG_HXX //autogen
#include <svx/stddlg.hxx>
#endif
#ifndef _BUTTON_HXX //autogen
#include <vcl/button.hxx>
#endif
#ifndef _EDIT_HXX //autogen
#include <vcl/edit.hxx>
#endif
#ifndef _FIXED_HXX //autogen
#include <vcl/fixed.hxx>
#endif
#ifndef _FIELD_HXX //autogen
#include <vcl/field.hxx>
#endif
#ifndef _SV_LSTBOX_HXX //autogen
#include <vcl/lstbox.hxx>
#endif
#ifndef _GROUP_HXX //autogen
#include <vcl/group.hxx>
#endif
#ifndef _SFXTABDLG_HXX //autogen
#include <sfx2/tabdlg.hxx>
#endif
#include "tox.hxx"
#ifndef _LIST_HXX //autogen
#include <tools/list.hxx>
#endif
#ifndef _TOXMGR_HXX
#include <toxmgr.hxx>
#endif
#ifndef _SVX_CHECKLBX_HXX //autogen wg. SvxCheckListBox
#include <svx/checklbx.hxx>
#endif
#ifndef _SV_RESARY_HXX //autogen wg. ResStringArray
#include <vcl/resary.hxx>
#endif
#ifndef _SVTREEBOX_HXX
#include <svtools/svtreebx.hxx>
#endif
#ifndef _SV_MENUBTN_HXX
#include <vcl/menubtn.hxx>
#endif
class SwWrtShell;
class SwTOXMgr;
/* -----------------14.06.99 12:12-------------------
--------------------------------------------------*/
struct CurTOXType
{
TOXTypes eType;
USHORT nIndex; //for TOX_USER only
BOOL operator==(const CurTOXType aCmp)
{
return eType == aCmp.eType && nIndex == aCmp.nIndex;
}
USHORT GetFlatIndex() const;
};
//-----------------------------------------------------------------------------
#if 0
class IdxExampleResource : public Resource
{
ResStringArray aTextArray;
public:
IdxExampleResource(const ResId& rResId);
ResStringArray& GetTextArray() {return aTextArray;}
};
#endif
//-----------------------------------------------------------------------------
class SwOneExampleFrame;
struct SwIndexSections_Impl;
class SwMultiTOXTabDialog : public SfxTabDialog
{
Window aExampleContainerWIN;
Window aDummyContainerWIN;
Window aExampleWIN;
CheckBox aShowExampleCB;
SwTOXMgr* pMgr;
SwWrtShell& rSh;
SwOneExampleFrame* pExampleFrame;
SwTOXDescription** pDescArr; //
SwForm** pFormArr; //
SwIndexSections_Impl** pxIndexSectionsArr;
SwTOXBase* pParamTOXBase;
CurTOXType eCurrentTOXType;
String sUserDefinedIndex;
USHORT nTypeCount;
USHORT nInitialTOXType;
BOOL bEditTOX;
BOOL bExampleCreated;
BOOL bGlobalFlag;
virtual short Ok();
SwTOXDescription* CreateTOXDescFromTOXBase(const SwTOXBase*pCurTOX);
DECL_LINK(CreateExample_Hdl, void* );
DECL_LINK(ShowPreviewHdl, CheckBox*);
public:
SwMultiTOXTabDialog(Window* pParent, const SfxItemSet& rSet,
SwWrtShell &rShell,
SwTOXBase* pCurTOX, USHORT nToxType = USHRT_MAX,
BOOL bGlobal = FALSE);
~SwMultiTOXTabDialog();
virtual void PageCreated( USHORT nId, SfxTabPage &rPage );
SwForm* GetForm(CurTOXType eType);
CurTOXType GetCurrentTOXType() const { return eCurrentTOXType;}
void SetCurrentTOXType(CurTOXType eSet)
{
eCurrentTOXType = eSet;
}
void UpdateExample();
BOOL IsTOXEditMode() const { return bEditTOX;}
// const SwTOXBase* GetCurTOX() const;
SwWrtShell& GetWrtShell() {return rSh;}
SwTOXDescription& GetTOXDescription(CurTOXType eTOXTypes);
void CreateOrUpdateExample(
USHORT nTOXIndex, USHORT nPage = 0, USHORT nCurLevel = USHRT_MAX);
static BOOL IsNoNum(SwWrtShell& rSh, const String& rName);
};
/* -----------------14.06.99 12:17-------------------
--------------------------------------------------*/
class SwOLENames : public Resource
{
ResStringArray aNamesAry;
public:
SwOLENames(const ResId& rResId) :
Resource(rResId),
aNamesAry(ResId(1)){FreeResource();}
ResStringArray& GetNames() { return aNamesAry;}
};
/* -----------------14.07.99 12:17-------------------
--------------------------------------------------*/
class SwTOXSelectTabPage : public SfxTabPage
{
FixedLine aTypeTitleFL;
FixedText aTitleFT;
Edit aTitleED;
FixedText aTypeFT;
ListBox aTypeLB;
CheckBox aReadOnlyCB;
FixedLine aAreaFL;
FixedText aAreaFT;
ListBox aAreaLB;
FixedText aLevelFT; //content, user
NumericField aLevelNF; //content, user
//content
FixedLine aCreateFromFL; // content, user, illustration
CheckBox aFromHeadingsCB;
PushButton aChapterDlgPB;
CheckBox aAddStylesCB;
PushButton aAddStylesPB;
//user
// CheckBox aFromStylesCB; -> aAddStylesCB;
// PushButton aFromStylesPB; -> aAddStylesPB;
CheckBox aFromTablesCB;
CheckBox aFromFramesCB;
CheckBox aFromGraphicsCB;
CheckBox aFromOLECB;
CheckBox aLevelFromChapterCB;
//illustration + table
RadioButton aFromCaptionsRB;
RadioButton aFromObjectNamesRB;
//illustration and tables
FixedText aCaptionSequenceFT;
ListBox aCaptionSequenceLB;
FixedText aDisplayTypeFT;
ListBox aDisplayTypeLB;
//all but illustration and table
CheckBox aTOXMarksCB;
//
//index only
CheckBox aCollectSameCB;
CheckBox aUseFFCB;
CheckBox aUseDashCB;
CheckBox aCaseSensitiveCB;
CheckBox aInitialCapsCB;
CheckBox aKeyAsEntryCB;
CheckBox aFromFileCB;
MenuButton aAutoMarkPB;
// PushButton aCreateAutoMarkPB;
// PushButton aEditAutoMarkPB;
FixedLine aIdxOptionsFL; // index only
// object only
SwOLENames aFromNames;
SvxCheckListBox aFromObjCLB;
FixedLine aFromObjFL;
CheckBox aSequenceCB;
FixedText aBracketFT;
ListBox aBracketLB;
FixedLine aAuthorityFormatFL;
Point aCBLeftPos1;
Point aCBLeftPos2;
Point aCBLeftPos3;
String aStyleArr[MAXLEVEL];
String sAutoMarkURL;
String sAutoMarkType;
String sAddStyleUser;
String sAddStyleContent;
BOOL bFirstCall;
DECL_LINK(TOXTypeHdl, ListBox* );
DECL_LINK(TOXAreaHdl, ListBox* );
DECL_LINK(ChapterHdl, PushButton* );
DECL_LINK(AddStylesHdl, PushButton* );
// DECL_LINK(AutoMarkHdl, PushButton* );
// DECL_LINK(CreateEditAutoMarkHdl,PushButton* );
DECL_LINK(MenuEnableHdl, Menu*);
DECL_LINK(MenuExecuteHdl, Menu*);
DECL_LINK(CheckBoxHdl, CheckBox* );
DECL_LINK(RadioButtonHdl, RadioButton* );
DECL_LINK(ModifyHdl, void*);
void ApplyTOXDescription();
void FillTOXDescription();
public:
SwTOXSelectTabPage(Window* pParent, const SfxItemSet& rAttrSet);
~SwTOXSelectTabPage();
virtual BOOL FillItemSet( SfxItemSet& );
virtual void Reset( const SfxItemSet& );
virtual void ActivatePage( const SfxItemSet& );
virtual int DeactivatePage( SfxItemSet* pSet = 0 );
static SfxTabPage* Create( Window* pParent,
const SfxItemSet& rAttrSet);
void SelectType(TOXTypes eSet); //preset TOXType, GlobalDoc
void SetWrtShell(SwWrtShell& rSh);
};
/* -----------------16.06.99 08:33-------------------
--------------------------------------------------*/
DECLARE_LIST(TOXControlList, Control*);
class SwTOXEdit;
class SwTOXButton;
class SwTOXEntryTabPage;
class SwTokenWindow : public Window
{
ImageButton aLeftScrollWin;
Window aCtrlParentWin;
ImageButton aRightScrollWin;
TOXControlList aControlList;
SwForm* pForm;
USHORT nLevel;
BOOL bValid;
String aButtonTexts[TOKEN_END]; // Text of the buttons
String aButtonHelpTexts[TOKEN_END]; // QuickHelpText of the buttons
String sCharStyle;
Link aButtonSelectedHdl;
Control* pActiveCtrl;
Link aModifyHdl;
SwTOXEntryTabPage* m_pParent;
DECL_LINK(EditResize, Edit*);
DECL_LINK(NextItemHdl, SwTOXEdit* );
DECL_LINK(TbxFocusHdl, SwTOXEdit* );
DECL_LINK(NextItemBtnHdl, SwTOXButton* );
DECL_LINK(TbxFocusBtnHdl, SwTOXButton* );
DECL_LINK(ScrollHdl, ImageButton* );
void SetActiveControl(Control* pSet);
Control* InsertItem(const String& rText, const SwFormToken& aToken);
void AdjustPositions();
void AdjustScrolling();
void MoveControls(long nOffset);
public:
SwTokenWindow(SwTOXEntryTabPage* pParent, const ResId& rResId);
~SwTokenWindow();
void SetForm(SwForm& rForm, USHORT nLevel);
USHORT GetLastLevel()const {return nLevel;};
BOOL IsValid() const {return bValid;}
void Invalidate() {bValid = FALSE;}
String GetPattern() const;
void SetButtonSelectedHdl(const Link& rLink)
{ aButtonSelectedHdl = rLink;}
void SetModifyHdl(const Link& rLink){aModifyHdl = rLink;}
Control* GetActiveControl()
{ return pActiveCtrl;}
void InsertAtSelection(const String& rText, const SwFormToken& aToken);
void RemoveControl(SwTOXButton* pDel, BOOL bInternalCall = FALSE);
BOOL Contains(FormTokenType) const;
BOOL DetermineLinkStart();
//helper for pattern buttons and edits
BOOL CreateQuickHelp(Control* pCtrl,
const SwFormToken& rToken, const HelpEvent& );
virtual void Resize();
};
/* -----------------------------23.12.99 14:16--------------------------------
---------------------------------------------------------------------------*/
class SwTOXEntryTabPage;
class SwIdxTreeListBox : public SvTreeListBox
{
SwTOXEntryTabPage* pParent;
virtual void RequestHelp( const HelpEvent& rHEvt );
public:
SwIdxTreeListBox(SwTOXEntryTabPage* pPar, const ResId& rResId);
};
/* -----------------16.06.99 12:49-------------------
--------------------------------------------------*/
class SwTOXEntryTabPage : public SfxTabPage
{
SwIdxTreeListBox aLevelLB;
FixedText aLevelFT;
SwTokenWindow aTokenWIN;
PushButton aAllLevelsPB;
PushButton aEntryNoPB;
PushButton aEntryPB;
PushButton aTabPB;
PushButton aChapterInfoPB;
PushButton aPageNoPB;
PushButton aHyperLinkPB;
ListBox aAuthFieldsLB;
PushButton aAuthInsertPB;
PushButton aAuthRemovePB;
FixedText aCharStyleFT;
ListBox aCharStyleLB; // character style of the current token
PushButton aEditStylePB;
FixedText aChapterEntryFT;
ListBox aChapterEntryLB; // type of chapter info
// FixedText aSortingFT;
// ListBox aSortingLB;
FixedText aFillCharFT;
ComboBox aFillCharCB; // fill char for tab stop
FixedText aTabPosFT;
MetricField aTabPosMF; // tab stop position
CheckBox aAutoRightCB;
FixedLine aEntryFL;
CheckBox aRelToStyleCB; // position relative to the right margin of the para style
FixedText aMainEntryStyleFT;
ListBox aMainEntryStyleLB; // character style of main entries in indexes
CheckBox aAlphaDelimCB;
CheckBox aCommaSeparatedCB;
FixedLine aFormatFL;
RadioButton aSortDocPosRB;
RadioButton aSortContentRB;
FixedLine aSortingFL;
FixedText aFirstKeyFT;
ListBox aFirstKeyLB;
ImageRadioButton aFirstSortUpRB;
ImageRadioButton aFirstSortDownRB;
FixedText aSecondKeyFT;
ListBox aSecondKeyLB;
ImageRadioButton aSecondSortUpRB;
ImageRadioButton aSecondSortDownRB;
FixedText aThirdKeyFT;
ListBox aThirdKeyLB;
ImageRadioButton aThirdSortUpRB;
ImageRadioButton aThirdSortDownRB;
FixedLine aSortKeyFL;
String sDelimStr;
String sLevelStr;
String sAuthTypeStr;
String sNoCharStyle;
String sNoCharSortKey;
Point aButtonPositions[5];
SwForm* pCurrentForm;
Point aRelToStylePos;
Point aRelToStyleIdxPos;
Size aLevelGBSize;
CurTOXType aLastTOXType;
BOOL bInLevelHdl;
DECL_LINK(StyleSelectHdl, ListBox*);
DECL_LINK(EditStyleHdl, PushButton*);
DECL_LINK(InsertTokenHdl, PushButton*);
DECL_LINK(LevelHdl, SvTreeListBox*);
DECL_LINK(AutoRightHdl, CheckBox*);
DECL_LINK(TokenSelectedHdl, SwFormToken*);
DECL_LINK(TabPosHdl, MetricField*);
DECL_LINK(FillCharHdl, ComboBox*);
DECL_LINK(RemoveInsertAuthHdl, PushButton*);
DECL_LINK(SortKeyHdl, RadioButton*);
DECL_LINK(ChapterInfoHdl, ListBox*);
DECL_LINK(AllLevelsHdl, PushButton*);
void EnableButtons();
void WriteBackLevel();
void UpdateDescriptor();
DECL_LINK(ModifyHdl, void*);
public:
SwTOXEntryTabPage(Window* pParent, const SfxItemSet& rAttrSet);
~SwTOXEntryTabPage();
virtual BOOL FillItemSet( SfxItemSet& );
virtual void Reset( const SfxItemSet& );
virtual void ActivatePage( const SfxItemSet& );
virtual int DeactivatePage( SfxItemSet* pSet = 0 );
static SfxTabPage* Create( Window* pParent,
const SfxItemSet& rAttrSet);
void SetWrtShell(SwWrtShell& rSh);
String GetLevelHelp(USHORT nLevel) const;
void PreTokenButtonRemoved(const SwFormToken& rToken);
};
/* -----------------05.07.99 13:00-------------------
--------------------------------------------------*/
class SwTOXStylesTabPage : public SfxTabPage
{
FixedText aLevelFT2;
ListBox aLevelLB;
FixedText aTemplateFT;
ListBox aParaLayLB;
PushButton aStdBT;
ImageButton aAssignBT;
PushButton aEditStyleBT;
FixedLine aFormatFL;
SwForm* pCurrentForm;
// void UpdatePattern();
DECL_LINK( EditStyleHdl, Button *);
DECL_LINK( StdHdl, Button * );
DECL_LINK( EnableSelectHdl, ListBox * );
DECL_LINK( DoubleClickHdl, Button * );
DECL_LINK( AssignHdl, Button * );
DECL_LINK( ModifyHdl, void*);
SwForm& GetForm()
{
SwMultiTOXTabDialog* pDlg = (SwMultiTOXTabDialog*)GetTabDialog();
return *pDlg->GetForm(pDlg->GetCurrentTOXType());
}
public:
SwTOXStylesTabPage(Window* pParent, const SfxItemSet& rAttrSet);
~SwTOXStylesTabPage();
virtual BOOL FillItemSet( SfxItemSet& );
virtual void Reset( const SfxItemSet& );
virtual void ActivatePage( const SfxItemSet& );
virtual int DeactivatePage( SfxItemSet* pSet = 0 );
static SfxTabPage* Create( Window* pParent,
const SfxItemSet& rAttrSet);
};
#endif // _CNTTAB_HXX