diff options
Diffstat (limited to 'cui/source/inc/autocdlg.hxx')
-rw-r--r-- | cui/source/inc/autocdlg.hxx | 423 |
1 files changed, 423 insertions, 0 deletions
diff --git a/cui/source/inc/autocdlg.hxx b/cui/source/inc/autocdlg.hxx new file mode 100644 index 0000000000..2677b8535e --- /dev/null +++ b/cui/source/inc/autocdlg.hxx @@ -0,0 +1,423 @@ +/* -*- 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 . + */ +#pragma once + +#include <sfx2/tabdlg.hxx> +#include <svx/langbox.hxx> +#include <unotools/collatorwrapper.hxx> + +#include <map> +#include <set> +#include <utility> + +class CharClass; +class SmartTagMgr; + +namespace editeng { class SortedAutoCompleteStrings; } + +// class OfaAutoCorrDlg -------------------------------------------------- + +class OfaAutoCorrDlg : public SfxTabDialogController +{ + std::unique_ptr<weld::Widget> m_xLanguageBox; + std::unique_ptr<SvxLanguageBox> m_xLanguageLB; + + DECL_LINK(SelectLanguageHdl, weld::ComboBox&, void); +public: + + OfaAutoCorrDlg(weld::Window* pParent, const SfxItemSet *pSet); + virtual ~OfaAutoCorrDlg() override; + + void EnableLanguage(bool bEnable); +}; + +// class OfaAutocorrOptionsPage ------------------------------------------ + +class OfaAutocorrOptionsPage : public SfxTabPage +{ +private: + OUString m_sInput; + OUString m_sDoubleCaps; + OUString m_sStartCap; + OUString m_sBoldUnderline; + OUString m_sURL; + OUString m_sDOI; + OUString m_sNoDblSpaces; + OUString m_sDash; + OUString m_sAccidentalCaps; + + std::unique_ptr<weld::TreeView> m_xCheckLB; + + void InsertEntry(const OUString& rTxt); + +public: + OfaAutocorrOptionsPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet); + virtual ~OfaAutocorrOptionsPage() override; + + static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, + const SfxItemSet* rAttrSet); + + virtual bool FillItemSet( SfxItemSet* rSet ) override; + virtual void Reset( const SfxItemSet* rSet ) override; + virtual void ActivatePage( const SfxItemSet& ) override; + +}; + +// class OfaSwAutoFmtOptionsPage ---------------------------------------------------- + +class OfaSwAutoFmtOptionsPage : public SfxTabPage +{ + OUString sDeleteEmptyPara; + OUString sUseReplaceTbl; + OUString sCapitalStartWord; + OUString sCapitalStartSentence; + OUString sUserStyle; + OUString sBullet; + OUString sBoldUnder; + OUString sNoDblSpaces; + OUString sCorrectCapsLock; + OUString sDetectURL; + OUString sDetectDOI; + OUString sDash; + OUString sRightMargin; + OUString sNum; + OUString sBulletsAfterSpace; + OUString sBorder; + OUString sTable; + OUString sReplaceTemplates; + OUString sDelSpaceAtSttEnd; + OUString sDelSpaceBetweenLines; + + OUString sMargin; + OUString sBulletChar; + OUString sByInputBulletChar; + + vcl::Font aBulletFont; + vcl::Font aByInputBulletFont; + sal_uInt16 nPercent; + + std::unique_ptr<weld::TreeView> m_xCheckLB; + std::unique_ptr<weld::Button> m_xEditPB; + + DECL_LINK(SelectHdl, weld::TreeView&, void); + DECL_LINK(EditHdl, weld::Button&, void); + DECL_LINK(DoubleClickEditHdl, weld::TreeView&, bool); + + void CreateEntry(const OUString& rTxt, sal_uInt16 nCol); + +public: + OfaSwAutoFmtOptionsPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet); + static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, + const SfxItemSet* rAttrSet); + virtual ~OfaSwAutoFmtOptionsPage() override; + + virtual bool FillItemSet( SfxItemSet* rSet ) override; + virtual void Reset( const SfxItemSet* rSet ) override; + virtual void ActivatePage( const SfxItemSet& ) override; +}; + +// class OfaAutocorrReplacePage ------------------------------------------ + +struct DoubleString +{ + OUString sShort; + OUString sLong; + void* pUserData; ///< CheckBox -> form. Text Bool -> selection text + DoubleString(OUString aShort, OUString aLong) + : sShort(std::move(aShort)) + , sLong(std::move(aLong)) + , pUserData(nullptr) + { + } +}; + +typedef std::vector<DoubleString> DoubleStringArray; + +struct StringChangeList +{ + DoubleStringArray aNewEntries; + DoubleStringArray aDeletedEntries; +}; + +typedef std::map<LanguageType, StringChangeList> StringChangeTable; + +class OfaAutocorrReplacePage : public SfxTabPage +{ +private: + + StringChangeTable aChangesTable; + + OUString sModify; + OUString sNew; + + std::set<OUString> aFormatText; + std::map<LanguageType, DoubleStringArray> + aDoubleStringTable; + CollatorWrapper maCompareClass; + std::unique_ptr<CharClass> pCharClass; + LanguageType eLang; + + bool bHasSelectionText; + bool bFirstSelect:1; + bool bReplaceEditChanged:1; + bool bSWriter:1; + + std::vector<int> m_aReplaceFixedWidths; + std::unique_ptr<weld::CheckButton> m_xTextOnlyCB; + std::unique_ptr<weld::Entry> m_xShortED; + std::unique_ptr<weld::Entry> m_xReplaceED; + std::unique_ptr<weld::TreeView> m_xReplaceTLB; + std::unique_ptr<weld::Button> m_xNewReplacePB; + std::unique_ptr<weld::Button> m_xReplacePB; + std::unique_ptr<weld::Button> m_xDeleteReplacePB; + std::unique_ptr<weld::Container> m_xButtonBox; + + DECL_LINK(SelectHdl, weld::TreeView&, void); + DECL_LINK(NewDelButtonHdl, weld::Button&, void); + DECL_LINK(NewDelActionHdl, weld::Entry&, bool); + DECL_LINK(EntrySizeAllocHdl, const Size&, void); + DECL_LINK(ModifyHdl, weld::Entry&, void); + bool NewDelHdl(const weld::Widget*); + + void RefillReplaceBox( bool bFromReset, + LanguageType eOldLanguage, + LanguageType eNewLanguage); + +public: + OfaAutocorrReplacePage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet); + virtual ~OfaAutocorrReplacePage() override; + + static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet); + + virtual bool FillItemSet( SfxItemSet* rSet ) override; + virtual void Reset( const SfxItemSet* rSet ) override; + virtual void ActivatePage( const SfxItemSet& ) override; + virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; + + void SetLanguage(LanguageType eSet); + void DeleteEntry(const OUString& sShort, const OUString& sLong); + void NewEntry(const OUString& sShort, const OUString& sLong, bool bKeepSourceFormatting); +}; + +// class OfaAutocorrExceptPage --------------------------------------------- + +struct StringsArrays +{ + std::vector<OUString> aAbbrevStrings; + std::vector<OUString> aDoubleCapsStrings; + + StringsArrays() { } +}; +typedef std::map<LanguageType, StringsArrays> StringsTable; + +class OfaAutocorrExceptPage : public SfxTabPage +{ +private: + StringsTable aStringsTable; + CollatorWrapper maCompareClass; + LanguageType eLang; + + std::unique_ptr<weld::Entry> m_xAbbrevED; + std::unique_ptr<weld::TreeView> m_xAbbrevLB; + std::unique_ptr<weld::Button> m_xNewAbbrevPB; + std::unique_ptr<weld::Button> m_xDelAbbrevPB; + std::unique_ptr<weld::CheckButton> m_xAutoAbbrevCB; + + std::unique_ptr<weld::Entry> m_xDoubleCapsED; + std::unique_ptr<weld::TreeView> m_xDoubleCapsLB; + std::unique_ptr<weld::Button> m_xNewDoublePB; + std::unique_ptr<weld::Button> m_xDelDoublePB; + std::unique_ptr<weld::CheckButton> m_xAutoCapsCB; + + DECL_LINK(NewDelButtonHdl, weld::Button&, void); + DECL_LINK(NewDelActionHdl, weld::Entry&, bool); + DECL_LINK(SelectHdl, weld::TreeView&, void); + DECL_LINK(ModifyHdl, weld::Entry&, void); + bool NewDelHdl(const weld::Widget*); + /// Box filled with new language + void RefillReplaceBoxes(bool bFromReset, + LanguageType eOldLanguage, + LanguageType eNewLanguage); +public: + OfaAutocorrExceptPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet); + virtual ~OfaAutocorrExceptPage() override; + + static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, + const SfxItemSet* rAttrSet); + + virtual bool FillItemSet( SfxItemSet* rSet ) override; + virtual void Reset( const SfxItemSet* rSet ) override; + virtual void ActivatePage( const SfxItemSet& ) override; + virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; + void SetLanguage(LanguageType eSet); + +}; + +// class OfaQuoteTabPage ------------------------------------------------- + +class OfaQuoteTabPage : public SfxTabPage +{ +private: + OUString sNonBrkSpace; + OUString sOrdinal; + OUString sTransliterateRTL; + OUString sAngleQuotes; + + sal_UCS4 cSglStartQuote; + sal_UCS4 cSglEndQuote; + + sal_UCS4 cStartQuote; + sal_UCS4 cEndQuote; + + std::unique_ptr<weld::CheckButton> m_xSingleTypoCB; + std::unique_ptr<weld::Button> m_xSglStartQuotePB; + std::unique_ptr<weld::Label> m_xSglStartExFT; + std::unique_ptr<weld::Button> m_xSglEndQuotePB; + std::unique_ptr<weld::Label> m_xSglEndExFT; + std::unique_ptr<weld::Button> m_xSglStandardPB; + std::unique_ptr<weld::CheckButton> m_xDoubleTypoCB; + std::unique_ptr<weld::Button> m_xDblStartQuotePB; + std::unique_ptr<weld::Label> m_xDblStartExFT; + std::unique_ptr<weld::Button> m_xDblEndQuotePB; + std::unique_ptr<weld::Label> m_xDblEndExFT; + std::unique_ptr<weld::Button> m_xDblStandardPB; + OUString m_sStandard; + /// For anything but writer + std::unique_ptr<weld::TreeView> m_xCheckLB; + /// Just for writer + std::unique_ptr<weld::TreeView> m_xSwCheckLB; + + + DECL_LINK(QuoteHdl, weld::Button&, void); + DECL_LINK(StdQuoteHdl, weld::Button&, void); + + OUString ChangeStringExt_Impl( sal_UCS4 ); + + static void CreateEntry(weld::TreeView& rLstBox, const OUString& rTxt, + sal_uInt16 nCol, sal_uInt16 nTextCol); + +public: + OfaQuoteTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet); + static std::unique_ptr<SfxTabPage> Create(weld::Container* pPage, weld::DialogController* pController, + const SfxItemSet* rAttrSet); + virtual ~OfaQuoteTabPage() override; + + virtual bool FillItemSet( SfxItemSet* rSet ) override; + virtual void Reset( const SfxItemSet* rSet ) override; + virtual void ActivatePage( const SfxItemSet& ) override; +}; + +// class OfaAutoCompleteTabPage --------------------------------------------- + +class OfaAutoCompleteTabPage : public SfxTabPage +{ +private: + editeng::SortedAutoCompleteStrings* m_pAutoCompleteList; + sal_uInt16 m_nAutoCmpltListCnt; + + std::unique_ptr<weld::CheckButton> m_xCBActiv; ///<Enable word completion + std::unique_ptr<weld::CheckButton> m_xCBAppendSpace;///<Append space + std::unique_ptr<weld::CheckButton> m_xCBAsTip; ///<Show as tip + + std::unique_ptr<weld::CheckButton> m_xCBCollect;///<Collect words + std::unique_ptr<weld::CheckButton> m_xCBRemoveList;///<...save the list for later use... + + std::unique_ptr<weld::ComboBox> m_xDCBExpandKey; + std::unique_ptr<weld::SpinButton> m_xNFMinWordlen; + std::unique_ptr<weld::SpinButton> m_xNFMaxEntries; + std::unique_ptr<weld::TreeView> m_xLBEntries; + std::unique_ptr<weld::Button> m_xPBEntries; + + DECL_LINK(CheckHdl, weld::Toggleable&, void); + DECL_LINK(KeyReleaseHdl, const KeyEvent&, bool); + +public: + OfaAutoCompleteTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet); + static std::unique_ptr<SfxTabPage> Create(weld::Container* pPage, weld::DialogController* pController, + const SfxItemSet* rAttrSet); + virtual ~OfaAutoCompleteTabPage() override; + + virtual bool FillItemSet( SfxItemSet* rSet ) override; + virtual void Reset( const SfxItemSet* rSet ) override; + virtual void ActivatePage( const SfxItemSet& ) override; + + void CopyToClipboard() const; + DECL_LINK(DeleteHdl, weld::Button&, void); +}; + +// class OfaSmartTagOptionsTabPage --------------------------------------------- + +/** Smart tag options tab page + + This tab page is used to enable/disable smart tag types +*/ +class OfaSmartTagOptionsTabPage : public SfxTabPage +{ +private: + + // controls + std::unique_ptr<weld::CheckButton> m_xMainCB; + std::unique_ptr<weld::TreeView> m_xSmartTagTypesLB; + std::unique_ptr<weld::Button> m_xPropertiesPB; + + /** Inserts items into m_aSmartTagTypesLB + + Reads out the smart tag types supported by the SmartTagMgr and + inserts the associated strings into the list box. + */ + void FillListBox( const SmartTagMgr& rSmartTagMgr ); + + /** Clears the m_aSmartTagTypesLB + */ + void ClearListBox(); + + /** Handler for the check box + + Enables/disables all controls in the tab page (except from the + check box. + */ + DECL_LINK(CheckHdl, weld::Toggleable&, void); + + /** Handler for the push button + + Calls the displayPropertyPage function of the smart tag recognizer + associated with the currently selected smart tag type. + */ + DECL_LINK(ClickHdl, weld::Button&, void); + + /** Handler for the list box + + Enables/disables the properties push button if selection in the + smart tag types list box changes. + */ + DECL_LINK(SelectHdl, weld::TreeView&, void); + +public: + /// construction via Create() + OfaSmartTagOptionsTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet); + virtual ~OfaSmartTagOptionsTabPage() override; + + static std::unique_ptr<SfxTabPage> Create( weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet); + + virtual bool FillItemSet( SfxItemSet* rSet ) override; + virtual void Reset( const SfxItemSet* rSet ) override; + virtual void ActivatePage( const SfxItemSet& ) override; +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |