LibreOffice Module sw (master)  1
swmodule.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
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/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
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 .
18  */
19 #ifndef INCLUDED_SW_INC_SWMODULE_HXX
20 #define INCLUDED_SW_INC_SWMODULE_HXX
21 
22 #include <sal/config.h>
23 
24 #include <cstddef>
25 
26 #include <tools/fldunit.hxx>
27 #include <svl/lstner.hxx>
28 #include <unotools/options.hxx>
29 #include <sfx2/module.hxx>
30 #include <sfx2/app.hxx>
31 
32 #include "swdllapi.h"
33 #include "shellid.hxx"
34 #include "fldupde.hxx"
35 
36 class Color;
37 class SfxItemSet;
38 class SfxRequest;
39 class SfxErrorHandler;
40 class SwDBConfig;
41 class SwModuleOptions;
42 class SwMasterUsrPref;
43 class SwViewOption;
44 class SwView;
45 class SwWrtShell;
46 class SwPrintOptions;
47 class SwChapterNumRules;
48 class SwStdFontConfig;
49 class SwNavigationConfig;
50 class SwTransferable;
52 class SwAttrPool;
53 namespace svtools{ class ColorConfig;}
55 class SvtCTLOptions;
56 class SvtUserOptions;
57 enum class SwCompareMode;
58 struct SwDBData;
59 
60 enum class SvViewOpt {
61  DestView,
62  DestText,
63  DestWeb,
64  DestViewOnly //ViewOptions are set only at View, not at the appl.
65 };
66 
67 namespace com{ namespace sun{ namespace star{ namespace scanner{
68  class XScannerManager2;
69 }}}}
70 namespace com { namespace sun { namespace star { namespace linguistic2 { class XLanguageGuessing; } } } }
71 namespace com { namespace sun { namespace star { namespace linguistic2 { class XLinguServiceEventListener; } } } }
72 namespace ooo { namespace vba { class XSinkCaller; } }
73 
75 {
76  OUString m_sActAuthor;
77 
78  // ConfigItems
79  std::unique_ptr<SwModuleOptions> m_pModuleConfig;
80  std::unique_ptr<SwMasterUsrPref> m_pUsrPref;
81  std::unique_ptr<SwMasterUsrPref> m_pWebUsrPref;
82  std::unique_ptr<SwPrintOptions> m_pPrintOptions;
83  std::unique_ptr<SwPrintOptions> m_pWebPrintOptions;
84  std::unique_ptr<SwChapterNumRules> m_pChapterNumRules;
85  std::unique_ptr<SwStdFontConfig> m_pStdFontConfig;
86  std::unique_ptr<SwNavigationConfig> m_pNavigationConfig;
87  std::unique_ptr<SwToolbarConfigItem> m_pToolbarConfig; //For stacked toolbars. Which one was visible?
88  std::unique_ptr<SwToolbarConfigItem> m_pWebToolbarConfig;
89  std::unique_ptr<SwDBConfig> m_pDBConfig;
90  std::unique_ptr<svtools::ColorConfig> m_pColorConfig;
91  std::unique_ptr<SvtAccessibilityOptions> m_pAccessibilityOptions;
92  std::unique_ptr<SvtCTLOptions> m_pCTLOptions;
93  std::unique_ptr<SvtUserOptions> m_pUserOptions;
94 
95  std::unique_ptr<SfxErrorHandler> m_pErrorHandler;
96 
98 
99  // Current view is held here in order to avoid one's being forced
100  // to work via GetActiveView.
101  // View is valid until destroyed in Activate or exchanged.
103 
104  // List of all Redline-authors.
105  std::vector<OUString> m_pAuthorNames;
106 
107  // DictionaryList listener to trigger spellchecking or hyphenation
108  css::uno::Reference< css::linguistic2::XLinguServiceEventListener > m_xLinguServiceEventListener;
109  css::uno::Reference< css::scanner::XScannerManager2 > m_xScannerManager;
110  css::uno::Reference< css::linguistic2::XLanguageGuessing > m_xLanguageGuesser;
111 
112  bool m_bAuthorInitialised : 1;
113  bool m_bEmbeddedLoadSave : 1;
114 
115  // Catch hint for DocInfo.
116  virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) override;
117 
119 
120  // Envelopes, labels.
121  void InsertEnv(SfxRequest&);
122  void InsertLab(SfxRequest&, bool bLabel);
123 
124  css::uno::Reference< ooo::vba::XSinkCaller > mxAutomationApplicationEventsCaller;
125 
126 public:
127  // public Data - used for internal Clipboard / Drag & Drop / XSelection
129 
131 
132 private:
134  static void InitInterface_Impl();
135 
136 public:
137  // This Ctor only for SW-Dll.
138  SwModule( SfxObjectFactory* pFact,
139  SfxObjectFactory* pWebFact,
140  SfxObjectFactory* pGlobalFact );
141 
142  virtual ~SwModule() override;
143 
144  // Set view for internal use only. It is public only for technical reasons.
145  void SetView(SwView* pVw) { m_pView = pVw; }
146  SwView* GetView() { return m_pView; }
147 
148  // Handler for slots.
149  void StateOther(SfxItemSet &);
150 
151  void ExecOther(SfxRequest &); // Fields, formula...
152 
153  // Modify user settings.
154  const SwMasterUsrPref *GetUsrPref(bool bWeb) const;
155  const SwViewOption* GetViewOption(bool bWeb);
156  void ApplyUsrPref(const SwViewOption &, SwView*,
157  SvViewOpt nDest = SvViewOpt::DestView );
158  void ApplyUserMetric( FieldUnit eMetric, bool bWeb );
159  void ApplyRulerMetric( FieldUnit eMetric, bool bHorizontal, bool bWeb );
160  void ApplyFieldUpdateFlags(SwFieldUpdateFlags eFieldFlags);
161  void ApplyLinkMode(sal_Int32 nNewLinkMode);
162 
163  // Default page mode for text grid.
164  void ApplyDefaultPageMode(bool bIsSquaredPageMode);
165 
166  void ApplyUserCharUnit(bool bApplyChar, bool bWeb); // apply_char_unit
167 
168  // Create ConfigItems.
169  SwModuleOptions* GetModuleConfig() { return m_pModuleConfig.get();}
170  SwPrintOptions* GetPrtOptions(bool bWeb);
171  SwChapterNumRules* GetChapterNumRules();
172  SwStdFontConfig* GetStdFontConfig() { return m_pStdFontConfig.get(); }
173  SwNavigationConfig* GetNavigationConfig();
174  SwToolbarConfigItem*GetToolbarConfig() { return m_pToolbarConfig.get(); }
175  SwToolbarConfigItem*GetWebToolbarConfig() { return m_pWebToolbarConfig.get(); }
176  SwDBConfig* GetDBConfig();
177  svtools::ColorConfig& GetColorConfig();
178  SvtAccessibilityOptions& GetAccessibilityOptions();
179  SvtCTLOptions& GetCTLOptions();
180  SvtUserOptions& GetUserOptions();
181 
182  // Iterate over views.
183  static SwView* GetFirstView();
184  static SwView* GetNextView(SwView const *);
185 
186  bool IsEmbeddedLoadSave() const { return m_bEmbeddedLoadSave; }
187  void SetEmbeddedLoadSave( bool bFlag ) { m_bEmbeddedLoadSave = bFlag; }
188 
189  static void ShowDBObj( SwView const & rView, const SwDBData& rData);
190 
191  // Table modi.
192  bool IsInsTableFormatNum(bool bHTML) const;
193  bool IsInsTableChangeNumFormat(bool bHTML) const;
194  bool IsInsTableAlignNum(bool bHTML) const;
195  bool IsSplitVerticalByDefault(bool bHTML) const;
196  void SetSplitVerticalByDefault(bool bHTML, bool value);
197 
198  // Redlining.
199  std::size_t GetRedlineAuthor();
200  OUString const & GetRedlineAuthor(std::size_t nPos);
202  OUString GetRedlineAuthorInfo();
203  std::size_t InsertRedlineAuthor(const OUString& rAuthor);
204  void SetRedlineAuthor(const OUString& rAuthor); // for unit tests
205 
206  void GetInsertAuthorAttr(std::size_t nAuthor, SfxItemSet &rSet);
207  void GetDeletedAuthorAttr(std::size_t nAuthor, SfxItemSet &rSet);
208  void GetFormatAuthorAttr(std::size_t nAuthor, SfxItemSet &rSet);
209 
210  sal_uInt16 GetRedlineMarkPos();
211  const Color& GetRedlineMarkColor();
212 
213  SwCompareMode GetCompareMode() const;
214  bool IsUseRsid() const;
215  bool IsIgnorePieces() const;
216  sal_uInt16 GetPieceLen() const;
217 
218  // Return defined DocStat - WordDelimiter.
219  OUString const & GetDocStatWordDelim() const;
220 
221  // Pass metric of ModuleConfig (for HTML-export).
222  FieldUnit GetMetric( bool bWeb ) const;
223 
224  // Pass update-statuses.
225  sal_uInt16 GetLinkUpdMode() const;
226  SwFieldUpdateFlags GetFieldUpdateFlags() const;
227 
228  // Virtual methods for options dialog.
229  virtual std::unique_ptr<SfxItemSet> CreateItemSet( sal_uInt16 nId ) override;
230  virtual void ApplyItemSet( sal_uInt16 nId, const SfxItemSet& rSet ) override;
231  virtual VclPtr<SfxTabPage> CreateTabPage( sal_uInt16 nId, TabPageParent pParent, const SfxItemSet& rSet ) override;
232  virtual std::unique_ptr<SfxStyleFamilies> CreateStyleFamilies() override;
233 
234  // Pool is created here and set at SfxShell.
235  void InitAttrPool();
236  // Delete pool before it is too late.
237  void RemoveAttrPool();
238 
239  // Invalidates online spell-wrong-lists if necessary.
240  static void CheckSpellChanges( bool bOnlineSpelling,
241  bool bIsSpellWrongAgain, bool bIsSpellAllAgain, bool bSmartTags );
242 
243  css::uno::Reference< css::scanner::XScannerManager2 > const &
244  GetScannerManager();
245 
246  css::uno::Reference< css::linguistic2::XLanguageGuessing > const &
247  GetLanguageGuesser();
248 
249  void RegisterAutomationApplicationEventsCaller(css::uno::Reference< ooo::vba::XSinkCaller > const& xCaller);
250  void CallAutomationApplicationEventSinks(const OUString& Method, css::uno::Sequence< css::uno::Any >& Arguments);
251 };
252 
253 // Access to SwModule, the View and the shell.
254 
255 #define SW_MOD() ( static_cast<SwModule*>(SfxApplication::GetModule(SfxToolsModule::Writer)))
256 
259 
260 namespace sw
261 {
263 }
264 
265 extern bool g_bNoInterrupt;
266 
267 #endif
268 
269 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
ConfigurationHints
SwAttrPool * m_pAttrPool
Definition: swmodule.hxx:97
FieldUnit
SwTransferable * m_pXSelection
Definition: swmodule.hxx:128
SwFieldUpdateFlags
Definition: fldupde.hxx:22
std::unique_ptr< SwDBConfig > m_pDBConfig
Definition: swmodule.hxx:89
SwStdFontConfig * GetStdFontConfig()
Definition: swmodule.hxx:172
std::unique_ptr< SwModuleOptions > m_pModuleConfig
Definition: swmodule.hxx:79
std::unique_ptr< SwMasterUsrPref > m_pWebUsrPref
Definition: swmodule.hxx:81
SwToolbarConfigItem * GetWebToolbarConfig()
Definition: swmodule.hxx:175
SwView * m_pView
Definition: swmodule.hxx:102
virtual std::unique_ptr< SfxStyleFamilies > CreateStyleFamilies()
Dialog to specify the properties of date form field.
Definition: accfrmobj.cxx:40
std::unique_ptr< SwChapterNumRules > m_pChapterNumRules
Definition: swmodule.hxx:84
Used by the UI to modify the document model.
Definition: wrtsh.hxx:88
css::uno::Reference< ooo::vba::XSinkCaller > mxAutomationApplicationEventsCaller
Definition: swmodule.hxx:124
std::unique_ptr< SwPrintOptions > m_pWebPrintOptions
Definition: swmodule.hxx:83
bool g_bNoInterrupt
Definition: swmodule.cxx:138
std::unique_ptr< SwMasterUsrPref > m_pUsrPref
Definition: swmodule.hxx:80
std::vector< OUString > m_pAuthorNames
Definition: swmodule.hxx:105
SwCompareMode
Definition: modcfg.hxx:87
std::unique_ptr< SvtAccessibilityOptions > m_pAccessibilityOptions
Definition: swmodule.hxx:91
SW_DLLPUBLIC SwView * GetActiveView()
Definition: swmodul1.cxx:123
#define SW_INTERFACE_MODULE
Definition: shellid.hxx:36
std::unique_ptr< SwStdFontConfig > m_pStdFontConfig
Definition: swmodule.hxx:85
SwToolbarConfigItem * GetToolbarConfig()
Definition: swmodule.hxx:174
SW_DLLPUBLIC SwWrtShell * GetActiveWrtShell()
Definition: swmodul1.cxx:115
virtual VclPtr< SfxTabPage > CreateTabPage(sal_uInt16 nId, TabPageParent pParent, const SfxItemSet &rSet)
SvViewOpt
Definition: swmodule.hxx:60
OUString m_sActAuthor
Definition: swmodule.hxx:76
#define SW_DLLPUBLIC
Definition: swdllapi.h:28
std::unique_ptr< svtools::ColorConfig > m_pColorConfig
Definition: swmodule.hxx:90
css::uno::Reference< css::scanner::XScannerManager2 > m_xScannerManager
Definition: swmodule.hxx:109
std::unique_ptr< SwToolbarConfigItem > m_pWebToolbarConfig
Definition: swmodule.hxx:88
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint)
css::uno::Reference< css::linguistic2::XLinguServiceEventListener > m_xLinguServiceEventListener
Definition: swmodule.hxx:108
css::uno::Reference< css::linguistic2::XLanguageGuessing > m_xLanguageGuesser
Definition: swmodule.hxx:110
bool IsEmbeddedLoadSave() const
Definition: swmodule.hxx:186
std::unique_ptr< SwPrintOptions > m_pPrintOptions
Definition: swmodule.hxx:82
std::unique_ptr< SvtCTLOptions > m_pCTLOptions
Definition: swmodule.hxx:92
virtual std::unique_ptr< SfxItemSet > CreateItemSet(sal_uInt16 nId)
std::unique_ptr< SwNavigationConfig > m_pNavigationConfig
Definition: swmodule.hxx:86
virtual void ApplyItemSet(sal_uInt16 nId, const SfxItemSet &rSet)
std::unique_ptr< SwToolbarConfigItem > m_pToolbarConfig
Definition: swmodule.hxx:87
std::unique_ptr< SvtUserOptions > m_pUserOptions
Definition: swmodule.hxx:93
void SetEmbeddedLoadSave(bool bFlag)
Definition: swmodule.hxx:187
virtual void ConfigurationChanged(ConfigurationBroadcaster *p, ConfigurationHints nHint)=0
Color * GetActiveRetoucheColor()
Definition: paintfrm.cxx:239
std::unique_ptr< SfxErrorHandler > m_pErrorHandler
Definition: swmodule.hxx:95
Definition: view.hxx:146
SwView * GetView()
Definition: swmodule.hxx:146
SwModuleOptions * GetModuleConfig()
Definition: swmodule.hxx:169
#define SFX_DECL_INTERFACE(nId)