/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 . */ #ifndef INCLUDED_SW_SOURCE_UIBASE_INC_SWUICNTTAB_HXX #define INCLUDED_SW_SOURCE_UIBASE_INC_SWUICNTTAB_HXX #include #include #include #include #include #include #include "toxmgr.hxx" #include "cnttab.hxx" #include class IndexEntryResource; class IndexEntrySupplierWrapper; class SwTOXWidget; class SwTOXEdit; class SwTOXButton; class SwTOXEntryTabPage; class SwOneExampleFrame; class SwWrtShell; namespace com::sun::star{ namespace text{ class XTextSection; class XDocumentIndex; } } struct SwIndexSections_Impl { css::uno::Reference< css::text::XTextSection > xContainerSection; css::uno::Reference< css::text::XDocumentIndex > xDocumentIndex; }; class SwMultiTOXTabDialog final : public SfxTabDialogController { std::unique_ptr m_pMgr; SwWrtShell& m_rWrtShell; struct TypeData { std::unique_ptr m_pForm; std::unique_ptr m_pDescription; std::unique_ptr m_pxIndexSections; }; std::vector m_vTypeData; SwTOXBase* m_pParamTOXBase; CurTOXType m_eCurrentTOXType; OUString m_sUserDefinedIndex; sal_uInt16 m_nInitialTOXType; bool m_bEditTOX; bool m_bExampleCreated; bool m_bGlobalFlag; std::unique_ptr m_xExampleFrame; std::unique_ptr m_xShowExampleCB; std::unique_ptr m_xExampleFrameWin; virtual short Ok() override; std::unique_ptr CreateTOXDescFromTOXBase(const SwTOXBase*pCurTOX); void ShowPreview(); DECL_LINK(CreateExample_Hdl, SwOneExampleFrame&, void); DECL_LINK(ShowPreviewHdl, weld::Toggleable&, void); public: SwMultiTOXTabDialog(weld::Widget* pParent, const SfxItemSet& rSet, SwWrtShell &rShell, SwTOXBase* pCurTOX, sal_uInt16 nToxType, bool bGlobal); virtual ~SwMultiTOXTabDialog() override; virtual void PageCreated(const OString& rId, SfxTabPage &rPage) override; SwForm* GetForm(CurTOXType eType); const CurTOXType& GetCurrentTOXType() const { return m_eCurrentTOXType;} void SetCurrentTOXType(const CurTOXType& eSet) { m_eCurrentTOXType = eSet; } bool IsTOXEditMode() const { return m_bEditTOX;} SwWrtShell& GetWrtShell() {return m_rWrtShell;} SwTOXDescription& GetTOXDescription(CurTOXType eTOXTypes); void CreateOrUpdateExample( TOXTypes nTOXIndex, sal_uInt16 nPage = 0, sal_uInt16 nCurLevel = USHRT_MAX); static bool IsNoNum(SwWrtShell& rSh, const OUString& rName); }; class SwTOXSelectTabPage final : public SfxTabPage { std::unique_ptr pIndexRes; OUString aStyleArr[MAXLEVEL]; OUString sAutoMarkURL; OUString sAutoMarkType; OUString sAddStyleUser; OUString sAddStyleContent; std::unique_ptr pIndexEntryWrapper; bool m_bWaitingInitialSettings; std::unique_ptr m_xTitleED; std::unique_ptr m_xTypeFT; std::unique_ptr m_xTypeLB; std::unique_ptr m_xReadOnlyCB; std::unique_ptr m_xAreaFrame; std::unique_ptr m_xAreaLB; std::unique_ptr m_xLevelFT; //content, user std::unique_ptr m_xLevelNF; //content, user //content std::unique_ptr m_xCreateFrame; // content, user, illustration std::unique_ptr m_xFromHeadingsCB; std::unique_ptr m_xStylesCB; std::unique_ptr m_xAddStylesCB; std::unique_ptr m_xAddStylesPB; //user std::unique_ptr m_xFromTablesCB; std::unique_ptr m_xFromFramesCB; std::unique_ptr m_xFromGraphicsCB; std::unique_ptr m_xFromOLECB; std::unique_ptr m_xLevelFromChapterCB; //illustration + table std::unique_ptr m_xFromCaptionsRB; std::unique_ptr m_xFromObjectNamesRB; //illustration and tables std::unique_ptr m_xCaptionSequenceFT; std::unique_ptr m_xCaptionSequenceLB; std::unique_ptr m_xDisplayTypeFT; std::unique_ptr m_xDisplayTypeLB; //all but illustration and table std::unique_ptr m_xTOXMarksCB; //index only std::unique_ptr m_xIdxOptionsFrame; std::unique_ptr m_xCollectSameCB; std::unique_ptr m_xUseFFCB; std::unique_ptr m_xUseDashCB; std::unique_ptr m_xCaseSensitiveCB; std::unique_ptr m_xInitialCapsCB; std::unique_ptr m_xKeyAsEntryCB; std::unique_ptr m_xFromFileCB; std::unique_ptr m_xAutoMarkPB; // object only std::unique_ptr m_xFromObjCLB; std::unique_ptr m_xFromObjFrame; std::unique_ptr m_xSequenceCB; std::unique_ptr m_xBracketLB; std::unique_ptr m_xAuthorityFrame; //all std::unique_ptr m_xSortFrame; std::unique_ptr m_xLanguageLB; std::unique_ptr m_xSortAlgorithmLB; DECL_LINK(TOXTypeHdl, weld::ComboBox&, void ); DECL_LINK(AddStylesHdl, weld::Button&, void ); DECL_LINK(MenuEnableHdl, weld::Toggleable&, void); DECL_LINK(MenuExecuteHdl, const OString&, void); DECL_LINK(LanguageListBoxHdl, weld::ComboBox&, void); void LanguageHdl(const weld::ComboBox*); DECL_LINK(CheckBoxHdl, weld::Toggleable&, void ); DECL_LINK(RadioButtonHdl, weld::Toggleable&, void); DECL_LINK(ModifyEntryHdl, weld::Entry&, void); DECL_LINK(ModifySpinHdl, weld::SpinButton&, void); DECL_LINK(ModifyListBoxHdl, weld::ComboBox&, void); void ModifyHdl(); void ApplyTOXDescription(); void FillTOXDescription(); public: SwTOXSelectTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rAttrSet); virtual ~SwTOXSelectTabPage() override; virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet* ) override; virtual void ActivatePage( const SfxItemSet& ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; static std::unique_ptr Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet); void SelectType(TOXTypes eSet); //preset TOXType, GlobalDoc void SetWrtShell(SwWrtShell const & rSh); }; class SwTokenWindow { SwForm* m_pForm; sal_uInt16 m_nLevel; bool m_bValid; OUString m_aButtonTexts[TOKEN_END]; // Text of the buttons OUString m_aButtonHelpTexts[TOKEN_END]; // QuickHelpText of the buttons OUString m_sCharStyle; Link m_aButtonSelectedHdl; SwTOXWidget* m_pActiveCtrl; Link m_aModifyHdl; OUString m_sAccessibleName; OUString m_sAdditionalAccnameString1; OUString m_sAdditionalAccnameString2; OUString m_sAdditionalAccnameString3; Idle m_aAdjustPositionsIdle; SwTOXEntryTabPage* m_pParent; std::unique_ptr m_xParentWidget; std::unique_ptr m_xBuilder; std::unique_ptr m_xContainer; std::unique_ptr m_xLeftScrollWin; std::unique_ptr m_xCtrlParentWin; std::unique_ptr m_xScrollWin; std::unique_ptr m_xRightScrollWin; std::vector> m_aControlList; DECL_LINK(EditResize, SwTOXEdit&, void); DECL_LINK(NextItemHdl, SwTOXEdit&, void); DECL_LINK(TbxFocusHdl, SwTOXWidget&, void); DECL_LINK(NextItemBtnHdl, SwTOXButton&, void); DECL_LINK(TbxFocusBtnHdl, SwTOXWidget&, void); DECL_LINK(ScrollBtnHdl, weld::Button&, void); DECL_LINK(ScrollHdl, weld::ScrolledWindow&, void); DECL_LINK(AdjustPositionsHdl, const Size&, void); void SetActiveControl(SwTOXWidget* pSet); SwTOXWidget* InsertItem(const OUString& rText, const SwFormToken& aToken); void AdjustPositions(); void AdjustScrolling(); void MoveControls(tools::Long nOffset); public: SwTokenWindow(std::unique_ptr xParent); weld::Container* get_child_container() { return m_xCtrlParentWin.get(); } ~SwTokenWindow(); void SetTabPage(SwTOXEntryTabPage *pParent) { m_pParent = pParent; } void SetForm(SwForm& rForm, sal_uInt16 nLevel); sal_uInt16 GetLastLevel()const {return m_nLevel;}; bool IsValid() const {return m_bValid;} void SetInvalid() {m_bValid = false;} OUString GetPattern() const; void SetButtonSelectedHdl(const Link& rLink) { m_aButtonSelectedHdl = rLink;} void SetModifyHdl(const Link& rLink){m_aModifyHdl = rLink;} SwTOXWidget* GetActiveControl() { return m_pActiveCtrl; } void InsertAtSelection(const SwFormToken& aToken); void RemoveControl(const SwTOXButton* pDel, bool bInternalCall = false); bool Contains(FormTokenType) const; //helper for pattern buttons and edits OUString CreateQuickHelp(const SwFormToken& rToken); void SetFocus2theAllBtn(); private: sal_uInt32 GetControlIndex(FormTokenType eType) const; }; class SwTOXEntryTabPage final : public SfxTabPage { OUString sDelimStr; OUString sLevelStr; OUString sAuthTypeStr; OUString sNoCharStyle; SwForm* m_pCurrentForm; CurTOXType aLastTOXType; bool bInLevelHdl; std::unique_ptr m_xTypeFT; std::unique_ptr m_xLevelFT; std::unique_ptr m_xLevelLB; std::unique_ptr m_xAllLevelsPB; std::unique_ptr m_xEntryNoPB; std::unique_ptr m_xEntryPB; std::unique_ptr m_xTabPB; std::unique_ptr m_xChapterInfoPB; std::unique_ptr m_xPageNoPB; std::unique_ptr m_xHyperLinkPB; std::unique_ptr m_xFieldBox; std::unique_ptr m_xAuthFieldsLB; std::unique_ptr m_xAuthInsertPB; std::unique_ptr m_xAuthRemovePB; std::unique_ptr m_xCharStyleLB; // character style of the current token std::unique_ptr m_xEditStylePB; std::unique_ptr m_xChapterEntryFT; std::unique_ptr m_xChapterEntryLB; // type of chapter info std::unique_ptr m_xNumberFormatFT; std::unique_ptr m_xNumberFormatLB; //!< format for numbering (E#) std::unique_ptr m_xEntryOutlineLevelFT; //!< Fixed text, for i53420 std::unique_ptr m_xEntryOutlineLevelNF; //!< level to evaluate outline level to, for i53420 std::unique_ptr m_xFillCharFT; std::unique_ptr m_xFillCharCB; // fill char for tab stop std::unique_ptr m_xTabPosFT; std::unique_ptr m_xTabPosMF; // tab stop position std::unique_ptr m_xAutoRightCB; std::unique_ptr m_xFormatFrame; std::unique_ptr m_xMainEntryStyleFT; std::unique_ptr m_xMainEntryStyleLB; // character style of main entries in indexes std::unique_ptr m_xAlphaDelimCB; std::unique_ptr m_xCommaSeparatedCB; std::unique_ptr m_xRelToStyleCB; // position relative to the right margin of the para style std::unique_ptr m_xSortingFrame; std::unique_ptr m_xSortDocPosRB; std::unique_ptr m_xSortContentRB; std::unique_ptr m_xSortKeyFrame; std::unique_ptr m_xFirstKeyLB; std::unique_ptr m_xFirstSortUpRB; std::unique_ptr m_xFirstSortDownRB; std::unique_ptr m_xSecondKeyLB; std::unique_ptr m_xSecondSortUpRB; std::unique_ptr m_xSecondSortDownRB; std::unique_ptr m_xThirdKeyLB; std::unique_ptr m_xThirdSortUpRB; std::unique_ptr m_xThirdSortDownRB; std::unique_ptr m_xTokenWIN; DECL_LINK(StyleSelectHdl, weld::ComboBox&, void); DECL_LINK(EditStyleHdl, weld::Button&, void); DECL_LINK(InsertTokenHdl, weld::Button&, void); DECL_LINK(LevelHdl, weld::TreeView&, void); DECL_LINK(AutoRightHdl, weld::Toggleable&, void); DECL_LINK(TokenSelectedHdl, SwFormToken&, void); DECL_LINK(TabPosHdl, weld::MetricSpinButton&, void); DECL_LINK(FillCharHdl, weld::ComboBox&, void); DECL_LINK(RemoveInsertAuthHdl, weld::Button&, void); DECL_LINK(SortKeyHdl, weld::Toggleable&, void); DECL_LINK(ChapterInfoHdl, weld::ComboBox&, void); DECL_LINK(ChapterInfoOutlineHdl, weld::SpinButton&, void); DECL_LINK(NumberFormatHdl, weld::ComboBox&, void); DECL_LINK(ToggleHdl, weld::Toggleable&, void); DECL_LINK(AllLevelsHdl, weld::Button&, void); void WriteBackLevel(); void UpdateDescriptor(); DECL_LINK(ModifyHdl, LinkParamNone*, void); void OnModify(bool bAllLevels); DECL_LINK(ModifyClickHdl, weld::Toggleable&, void); void ShowHideControls(int eType); public: SwTOXEntryTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rAttrSet); virtual ~SwTOXEntryTabPage() override; virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet* ) override; virtual void ActivatePage( const SfxItemSet& ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; static std::unique_ptr Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet); void SetWrtShell(SwWrtShell& rSh); void PreTokenButtonRemoved(const SwFormToken& rToken); void SetFocus2theAllBtn(); }; class SwTOXStylesTabPage final : public SfxTabPage { std::unique_ptr m_pCurrentForm; std::unique_ptr m_xLevelLB; std::unique_ptr m_xAssignBT; std::unique_ptr m_xParaLayLB; std::unique_ptr m_xStdBT; std::unique_ptr m_xEditStyleBT; DECL_LINK(EditStyleHdl, weld::Button&, void); DECL_LINK(StdHdl, weld::Button&, void); DECL_LINK(EnableSelectHdl, weld::TreeView&, void); DECL_LINK(DoubleClickHdl, weld::TreeView&, bool); DECL_LINK(AssignHdl, weld::Button&, void); void Modify(); SwForm& GetForm() { SwMultiTOXTabDialog* pDlg = static_cast(GetDialogController()); return *pDlg->GetForm(pDlg->GetCurrentTOXType()); } public: SwTOXStylesTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rAttrSet); virtual ~SwTOXStylesTabPage() override; virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet* ) override; virtual void ActivatePage( const SfxItemSet& ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; static std::unique_ptr Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet); }; #endif // INCLUDED_SW_SOURCE_UIBASE_INC_SWUICNTTAB_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */