summaryrefslogtreecommitdiffstats
path: root/sw/inc/swmodule.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sw/inc/swmodule.hxx')
-rw-r--r--sw/inc/swmodule.hxx268
1 files changed, 268 insertions, 0 deletions
diff --git a/sw/inc/swmodule.hxx b/sw/inc/swmodule.hxx
new file mode 100644
index 0000000000..03140bf622
--- /dev/null
+++ b/sw/inc/swmodule.hxx
@@ -0,0 +1,268 @@
+/* -*- 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_INC_SWMODULE_HXX
+#define INCLUDED_SW_INC_SWMODULE_HXX
+
+#include <sal/config.h>
+
+#include <cstddef>
+
+#include <o3tl/deleter.hxx>
+#include <tools/fldunit.hxx>
+#include <svl/lstner.hxx>
+#include <unotools/options.hxx>
+#include <sfx2/module.hxx>
+#include <sfx2/app.hxx>
+
+#include "swdllapi.h"
+#include "shellid.hxx"
+#include "fldupde.hxx"
+
+class Color;
+class SfxItemSet;
+class SfxRequest;
+class SfxErrorHandler;
+class SwDBConfig;
+class SwModuleOptions;
+class SwMasterUsrPref;
+class SwViewOption;
+class SwView;
+class SwWrtShell;
+class SwPrintOptions;
+class SwChapterNumRules;
+class SwStdFontConfig;
+class SwNavigationConfig;
+class SwTransferable;
+class SwToolbarConfigItem;
+class SwAttrPool;
+namespace svtools{ class ColorConfig;}
+class SvtAccessibilityOptions;
+class SvtCTLOptions;
+class SvtUserOptions;
+enum class SwCompareMode;
+struct SwDBData;
+namespace tools { class JsonWriter; }
+
+enum class SvViewOpt {
+ DestView,
+ DestText,
+ DestWeb,
+ DestViewOnly //ViewOptions are set only at View, not at the appl.
+};
+
+namespace com::sun::star::scanner { class XScannerManager2; }
+namespace com::sun::star::linguistic2 { class XLanguageGuessing; }
+namespace com::sun::star::linguistic2 { class XLinguServiceEventListener; }
+namespace ooo::vba { class XSinkCaller; }
+
+class SW_DLLPUBLIC SwModule final : public SfxModule, public SfxListener, public utl::ConfigurationListener
+{
+ OUString m_sActAuthor;
+
+ // ConfigItems
+ std::unique_ptr<SwModuleOptions, o3tl::default_delete<SwModuleOptions>> m_pModuleConfig;
+ std::unique_ptr<SwMasterUsrPref, o3tl::default_delete<SwMasterUsrPref>> m_pUsrPref;
+ std::unique_ptr<SwMasterUsrPref, o3tl::default_delete<SwMasterUsrPref>> m_pWebUsrPref;
+ std::unique_ptr<SwPrintOptions> m_pPrintOptions;
+ std::unique_ptr<SwPrintOptions> m_pWebPrintOptions;
+ std::unique_ptr<SwChapterNumRules> m_pChapterNumRules;
+ std::unique_ptr<SwStdFontConfig> m_pStdFontConfig;
+ std::unique_ptr<SwNavigationConfig> m_pNavigationConfig;
+ std::unique_ptr<SwToolbarConfigItem> m_pToolbarConfig; //For stacked toolbars. Which one was visible?
+ std::unique_ptr<SwToolbarConfigItem> m_pWebToolbarConfig;
+ std::unique_ptr<SwDBConfig> m_pDBConfig;
+ std::unique_ptr<svtools::ColorConfig> m_pColorConfig;
+ std::unique_ptr<SvtAccessibilityOptions> m_pAccessibilityOptions;
+ std::unique_ptr<SvtCTLOptions> m_pCTLOptions;
+ std::unique_ptr<SvtUserOptions> m_pUserOptions;
+
+ std::unique_ptr<SfxErrorHandler> m_pErrorHandler;
+
+ rtl::Reference<SwAttrPool> m_pAttrPool;
+
+ // Current view is held here in order to avoid one's being forced
+ // to work via GetActiveView.
+ // View is valid until destroyed in Activate or exchanged.
+ SwView* m_pView;
+
+ // List of all Redline-authors.
+ std::vector<OUString> m_pAuthorNames;
+
+ // DictionaryList listener to trigger spellchecking or hyphenation
+ css::uno::Reference< css::linguistic2::XLinguServiceEventListener > m_xLinguServiceEventListener;
+ css::uno::Reference< css::scanner::XScannerManager2 > m_xScannerManager;
+ css::uno::Reference< css::linguistic2::XLanguageGuessing > m_xLanguageGuesser;
+
+ bool m_bAuthorInitialised : 1;
+ bool m_bEmbeddedLoadSave : 1;
+
+ // Catch hint for DocInfo.
+ virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
+
+ virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, ConfigurationHints ) override;
+
+ // Envelopes, labels.
+ void InsertEnv(SfxRequest&);
+ void InsertLab(SfxRequest&, bool bLabel);
+
+ css::uno::Reference< ooo::vba::XSinkCaller > mxAutomationApplicationEventsCaller;
+
+public:
+ // public Data - used for internal Clipboard / Drag & Drop / XSelection
+ SwTransferable *m_pDragDrop, *m_pXSelection;
+
+ SFX_DECL_INTERFACE(SW_INTERFACE_MODULE)
+
+private:
+ /// SfxInterface initializer.
+ static void InitInterface_Impl();
+
+public:
+ // This Ctor only for SW-Dll.
+ SwModule( SfxObjectFactory* pFact,
+ SfxObjectFactory* pWebFact,
+ SfxObjectFactory* pGlobalFact );
+
+ virtual ~SwModule() override;
+
+ // Set view for internal use only. It is public only for technical reasons.
+ void SetView(SwView* pVw) { m_pView = pVw; }
+ SwView* GetView() { return m_pView; }
+
+ // Handler for slots.
+ void StateOther(SfxItemSet &);
+
+ void ExecOther(SfxRequest &); // Fields, formula...
+
+ // Modify user settings.
+ const SwMasterUsrPref *GetUsrPref(bool bWeb) const;
+ const SwViewOption* GetViewOption(bool bWeb);
+ void ApplyUsrPref(const SwViewOption &, SwView*,
+ SvViewOpt nDest = SvViewOpt::DestView );
+ void ApplyUserMetric( FieldUnit eMetric, bool bWeb );
+ void ApplyRulerMetric( FieldUnit eMetric, bool bHorizontal, bool bWeb );
+ void ApplyFieldUpdateFlags(SwFieldUpdateFlags eFieldFlags);
+ void ApplyLinkMode(sal_Int32 nNewLinkMode);
+
+ // Default page mode for text grid.
+ void ApplyDefaultPageMode(bool bIsSquaredPageMode);
+
+ void ApplyUserCharUnit(bool bApplyChar, bool bWeb); // apply_char_unit
+
+ // Create ConfigItems.
+ SwModuleOptions* GetModuleConfig() { return m_pModuleConfig.get();}
+ SwPrintOptions* GetPrtOptions(bool bWeb);
+ SwChapterNumRules* GetChapterNumRules();
+ SwStdFontConfig* GetStdFontConfig() { return m_pStdFontConfig.get(); }
+ SwNavigationConfig* GetNavigationConfig();
+ SwToolbarConfigItem*GetToolbarConfig() { return m_pToolbarConfig.get(); }
+ SwToolbarConfigItem*GetWebToolbarConfig() { return m_pWebToolbarConfig.get(); }
+ SwDBConfig* GetDBConfig();
+ svtools::ColorConfig& GetColorConfig();
+ SvtUserOptions& GetUserOptions();
+
+ // Iterate over views.
+ static SwView* GetFirstView();
+ static SwView* GetNextView(SwView const *);
+
+ bool IsEmbeddedLoadSave() const { return m_bEmbeddedLoadSave; }
+ void SetEmbeddedLoadSave( bool bFlag ) { m_bEmbeddedLoadSave = bFlag; }
+
+ static void ShowDBObj( SwView const & rView, const SwDBData& rData);
+
+ // Table modi.
+ bool IsInsTableFormatNum(bool bHTML) const;
+ bool IsInsTableChangeNumFormat(bool bHTML) const;
+ bool IsInsTableAlignNum(bool bHTML) const;
+ bool IsSplitVerticalByDefault(bool bHTML) const;
+ void SetSplitVerticalByDefault(bool bHTML, bool value);
+
+ // Redlining.
+ std::size_t GetRedlineAuthor();
+ OUString const & GetRedlineAuthor(std::size_t nPos);
+ void ClearRedlineAuthors();
+ /// See SwXTextDocument::getTrackedChangeAuthors().
+ void GetRedlineAuthorInfo(tools::JsonWriter& rJsonWriter);
+ std::size_t InsertRedlineAuthor(const OUString& rAuthor);
+ void SetRedlineAuthor(const OUString& rAuthor); // for unit tests
+
+ void GetInsertAuthorAttr(std::size_t nAuthor, SfxItemSet &rSet);
+ void GetDeletedAuthorAttr(std::size_t nAuthor, SfxItemSet &rSet);
+ void GetFormatAuthorAttr(std::size_t nAuthor, SfxItemSet &rSet);
+
+ sal_uInt16 GetRedlineMarkPos() const;
+ const Color& GetRedlineMarkColor() const;
+
+ SwCompareMode GetCompareMode() const;
+ bool IsUseRsid() const;
+ bool IsIgnorePieces() const;
+ sal_uInt16 GetPieceLen() const;
+
+ // Return defined DocStat - WordDelimiter.
+ OUString const & GetDocStatWordDelim() const;
+
+ // Pass metric of ModuleConfig (for HTML-export).
+ FieldUnit GetMetric( bool bWeb ) const;
+
+ // Pass update-statuses.
+ sal_uInt16 GetLinkUpdMode() const;
+ SwFieldUpdateFlags GetFieldUpdateFlags() const;
+
+ // Virtual methods for options dialog.
+ virtual std::optional<SfxItemSet> CreateItemSet( sal_uInt16 nId ) override;
+ virtual void ApplyItemSet( sal_uInt16 nId, const SfxItemSet& rSet ) override;
+ virtual std::unique_ptr<SfxTabPage> CreateTabPage( sal_uInt16 nId, weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet ) override;
+ virtual std::optional<SfxStyleFamilies> CreateStyleFamilies() override;
+
+ // Pool is created here and set at SfxShell.
+ void InitAttrPool();
+ // Delete pool before it is too late.
+ void RemoveAttrPool();
+
+ // Invalidates online spell-wrong-lists if necessary.
+ static void CheckSpellChanges( bool bOnlineSpelling,
+ bool bIsSpellWrongAgain, bool bIsSpellAllAgain, bool bSmartTags );
+
+ css::uno::Reference< css::scanner::XScannerManager2 > const &
+ GetScannerManager();
+
+ css::uno::Reference< css::linguistic2::XLanguageGuessing > const &
+ GetLanguageGuesser();
+
+ void RegisterAutomationApplicationEventsCaller(css::uno::Reference< ooo::vba::XSinkCaller > const& xCaller);
+ void CallAutomationApplicationEventSinks(const OUString& Method, css::uno::Sequence< css::uno::Any >& Arguments);
+};
+
+// Access to SwModule, the View and the shell.
+
+#define SW_MOD() ( static_cast<SwModule*>(SfxApplication::GetModule(SfxToolsModule::Writer)))
+
+SW_DLLPUBLIC SwView* GetActiveView();
+SW_DLLPUBLIC SwWrtShell* GetActiveWrtShell();
+
+namespace sw
+{
+SW_DLLPUBLIC Color* GetActiveRetoucheColor();
+}
+
+extern bool g_bNoInterrupt;
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */