lok: Hide file linking in section
[LibreOffice.git] / sw / inc / swmodule.hxx
blob6fbab3ad4f785aedba735328432fb26501014d27
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 #ifndef INCLUDED_SW_INC_SWMODULE_HXX
20 #define INCLUDED_SW_INC_SWMODULE_HXX
22 #include <sal/config.h>
24 #include <cstddef>
26 #include <o3tl/deleter.hxx>
27 #include <tools/fldunit.hxx>
28 #include <svl/lstner.hxx>
29 #include <unotools/options.hxx>
30 #include <sfx2/module.hxx>
31 #include <sfx2/app.hxx>
33 #include "swdllapi.h"
34 #include "shellid.hxx"
35 #include "fldupde.hxx"
37 class Color;
38 class SfxItemSet;
39 class SfxRequest;
40 class SfxErrorHandler;
41 class SwDBConfig;
42 class SwModuleOptions;
43 class SwMasterUsrPref;
44 class SwViewOption;
45 class SwView;
46 class SwWrtShell;
47 class SwPrintOptions;
48 class SwChapterNumRules;
49 class SwStdFontConfig;
50 class SwNavigationConfig;
51 class SwTransferable;
52 class SwToolbarConfigItem;
53 class SwAttrPool;
54 namespace svtools{ class ColorConfig;}
55 class SvtAccessibilityOptions;
56 class SvtCTLOptions;
57 class SvtUserOptions;
58 enum class SwCompareMode;
59 struct SwDBData;
61 enum class SvViewOpt {
62 DestView,
63 DestText,
64 DestWeb,
65 DestViewOnly //ViewOptions are set only at View, not at the appl.
68 namespace com{ namespace sun{ namespace star{ namespace scanner{
69 class XScannerManager2;
70 }}}}
71 namespace com { namespace sun { namespace star { namespace linguistic2 { class XLanguageGuessing; } } } }
72 namespace com { namespace sun { namespace star { namespace linguistic2 { class XLinguServiceEventListener; } } } }
73 namespace ooo { namespace vba { class XSinkCaller; } }
75 class SW_DLLPUBLIC SwModule final : public SfxModule, public SfxListener, public utl::ConfigurationListener
77 OUString m_sActAuthor;
79 // ConfigItems
80 std::unique_ptr<SwModuleOptions, o3tl::default_delete<SwModuleOptions>> m_pModuleConfig;
81 std::unique_ptr<SwMasterUsrPref, o3tl::default_delete<SwMasterUsrPref>> m_pUsrPref;
82 std::unique_ptr<SwMasterUsrPref, o3tl::default_delete<SwMasterUsrPref>> m_pWebUsrPref;
83 std::unique_ptr<SwPrintOptions> m_pPrintOptions;
84 std::unique_ptr<SwPrintOptions> m_pWebPrintOptions;
85 std::unique_ptr<SwChapterNumRules> m_pChapterNumRules;
86 std::unique_ptr<SwStdFontConfig> m_pStdFontConfig;
87 std::unique_ptr<SwNavigationConfig> m_pNavigationConfig;
88 std::unique_ptr<SwToolbarConfigItem> m_pToolbarConfig; //For stacked toolbars. Which one was visible?
89 std::unique_ptr<SwToolbarConfigItem> m_pWebToolbarConfig;
90 std::unique_ptr<SwDBConfig> m_pDBConfig;
91 std::unique_ptr<svtools::ColorConfig> m_pColorConfig;
92 std::unique_ptr<SvtAccessibilityOptions> m_pAccessibilityOptions;
93 std::unique_ptr<SvtCTLOptions> m_pCTLOptions;
94 std::unique_ptr<SvtUserOptions> m_pUserOptions;
96 std::unique_ptr<SfxErrorHandler> m_pErrorHandler;
98 SwAttrPool *m_pAttrPool;
100 // Current view is held here in order to avoid one's being forced
101 // to work via GetActiveView.
102 // View is valid until destroyed in Activate or exchanged.
103 SwView* m_pView;
105 // List of all Redline-authors.
106 std::vector<OUString> m_pAuthorNames;
108 // DictionaryList listener to trigger spellchecking or hyphenation
109 css::uno::Reference< css::linguistic2::XLinguServiceEventListener > m_xLinguServiceEventListener;
110 css::uno::Reference< css::scanner::XScannerManager2 > m_xScannerManager;
111 css::uno::Reference< css::linguistic2::XLanguageGuessing > m_xLanguageGuesser;
113 bool m_bAuthorInitialised : 1;
114 bool m_bEmbeddedLoadSave : 1;
116 // Catch hint for DocInfo.
117 virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
119 virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, ConfigurationHints ) override;
121 // Envelopes, labels.
122 void InsertEnv(SfxRequest&);
123 void InsertLab(SfxRequest&, bool bLabel);
125 css::uno::Reference< ooo::vba::XSinkCaller > mxAutomationApplicationEventsCaller;
127 public:
128 // public Data - used for internal Clipboard / Drag & Drop / XSelection
129 SwTransferable *m_pDragDrop, *m_pXSelection;
131 SFX_DECL_INTERFACE(SW_INTERFACE_MODULE)
133 private:
134 /// SfxInterface initializer.
135 static void InitInterface_Impl();
137 public:
138 // This Ctor only for SW-Dll.
139 SwModule( SfxObjectFactory* pFact,
140 SfxObjectFactory* pWebFact,
141 SfxObjectFactory* pGlobalFact );
143 virtual ~SwModule() override;
145 // Set view for internal use only. It is public only for technical reasons.
146 void SetView(SwView* pVw) { m_pView = pVw; }
147 SwView* GetView() { return m_pView; }
149 // Handler for slots.
150 void StateOther(SfxItemSet &);
152 void ExecOther(SfxRequest &); // Fields, formula...
154 // Modify user settings.
155 const SwMasterUsrPref *GetUsrPref(bool bWeb) const;
156 const SwViewOption* GetViewOption(bool bWeb);
157 void ApplyUsrPref(const SwViewOption &, SwView*,
158 SvViewOpt nDest = SvViewOpt::DestView );
159 void ApplyUserMetric( FieldUnit eMetric, bool bWeb );
160 void ApplyRulerMetric( FieldUnit eMetric, bool bHorizontal, bool bWeb );
161 void ApplyFieldUpdateFlags(SwFieldUpdateFlags eFieldFlags);
162 void ApplyLinkMode(sal_Int32 nNewLinkMode);
164 // Default page mode for text grid.
165 void ApplyDefaultPageMode(bool bIsSquaredPageMode);
167 void ApplyUserCharUnit(bool bApplyChar, bool bWeb); // apply_char_unit
169 // Create ConfigItems.
170 SwModuleOptions* GetModuleConfig() { return m_pModuleConfig.get();}
171 SwPrintOptions* GetPrtOptions(bool bWeb);
172 SwChapterNumRules* GetChapterNumRules();
173 SwStdFontConfig* GetStdFontConfig() { return m_pStdFontConfig.get(); }
174 SwNavigationConfig* GetNavigationConfig();
175 SwToolbarConfigItem*GetToolbarConfig() { return m_pToolbarConfig.get(); }
176 SwToolbarConfigItem*GetWebToolbarConfig() { return m_pWebToolbarConfig.get(); }
177 SwDBConfig* GetDBConfig();
178 svtools::ColorConfig& GetColorConfig();
179 SvtAccessibilityOptions& GetAccessibilityOptions();
180 SvtCTLOptions& GetCTLOptions();
181 SvtUserOptions& GetUserOptions();
183 // Iterate over views.
184 static SwView* GetFirstView();
185 static SwView* GetNextView(SwView const *);
187 bool IsEmbeddedLoadSave() const { return m_bEmbeddedLoadSave; }
188 void SetEmbeddedLoadSave( bool bFlag ) { m_bEmbeddedLoadSave = bFlag; }
190 static void ShowDBObj( SwView const & rView, const SwDBData& rData);
192 // Table modi.
193 bool IsInsTableFormatNum(bool bHTML) const;
194 bool IsInsTableChangeNumFormat(bool bHTML) const;
195 bool IsInsTableAlignNum(bool bHTML) const;
196 bool IsSplitVerticalByDefault(bool bHTML) const;
197 void SetSplitVerticalByDefault(bool bHTML, bool value);
199 // Redlining.
200 std::size_t GetRedlineAuthor();
201 OUString const & GetRedlineAuthor(std::size_t nPos);
202 /// See SwXTextDocument::getTrackedChangeAuthors().
203 OUString GetRedlineAuthorInfo();
204 std::size_t InsertRedlineAuthor(const OUString& rAuthor);
205 void SetRedlineAuthor(const OUString& rAuthor); // for unit tests
207 void GetInsertAuthorAttr(std::size_t nAuthor, SfxItemSet &rSet);
208 void GetDeletedAuthorAttr(std::size_t nAuthor, SfxItemSet &rSet);
209 void GetFormatAuthorAttr(std::size_t nAuthor, SfxItemSet &rSet);
211 sal_uInt16 GetRedlineMarkPos() const;
212 const Color& GetRedlineMarkColor() const;
214 SwCompareMode GetCompareMode() const;
215 bool IsUseRsid() const;
216 bool IsIgnorePieces() const;
217 sal_uInt16 GetPieceLen() const;
219 // Return defined DocStat - WordDelimiter.
220 OUString const & GetDocStatWordDelim() const;
222 // Pass metric of ModuleConfig (for HTML-export).
223 FieldUnit GetMetric( bool bWeb ) const;
225 // Pass update-statuses.
226 sal_uInt16 GetLinkUpdMode() const;
227 SwFieldUpdateFlags GetFieldUpdateFlags() const;
229 // Virtual methods for options dialog.
230 virtual std::unique_ptr<SfxItemSet> CreateItemSet( sal_uInt16 nId ) override;
231 virtual void ApplyItemSet( sal_uInt16 nId, const SfxItemSet& rSet ) override;
232 virtual std::unique_ptr<SfxTabPage> CreateTabPage( sal_uInt16 nId, weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rSet ) override;
233 virtual std::unique_ptr<SfxStyleFamilies> CreateStyleFamilies() override;
235 // Pool is created here and set at SfxShell.
236 void InitAttrPool();
237 // Delete pool before it is too late.
238 void RemoveAttrPool();
240 // Invalidates online spell-wrong-lists if necessary.
241 static void CheckSpellChanges( bool bOnlineSpelling,
242 bool bIsSpellWrongAgain, bool bIsSpellAllAgain, bool bSmartTags );
244 css::uno::Reference< css::scanner::XScannerManager2 > const &
245 GetScannerManager();
247 css::uno::Reference< css::linguistic2::XLanguageGuessing > const &
248 GetLanguageGuesser();
250 void RegisterAutomationApplicationEventsCaller(css::uno::Reference< ooo::vba::XSinkCaller > const& xCaller);
251 void CallAutomationApplicationEventSinks(const OUString& Method, css::uno::Sequence< css::uno::Any >& Arguments);
254 // Access to SwModule, the View and the shell.
256 #define SW_MOD() ( static_cast<SwModule*>(SfxApplication::GetModule(SfxToolsModule::Writer)))
258 SW_DLLPUBLIC SwView* GetActiveView();
259 SW_DLLPUBLIC SwWrtShell* GetActiveWrtShell();
261 namespace sw
263 SW_DLLPUBLIC Color* GetActiveRetoucheColor();
266 extern bool g_bNoInterrupt;
268 #endif
270 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */