LibreOffice Module sw (master) 1
optcomp.cxx
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
20#include <optcomp.hxx>
21
22#include <cmdid.h>
23#include <docsh.hxx>
24#include <uiitems.hxx>
25#include <view.hxx>
26#include <wrtsh.hxx>
27
28#include <vcl/svapp.hxx>
29#include <vcl/weld.hxx>
30#include <sfx2/docfilt.hxx>
31#include <sfx2/fcontnr.hxx>
33#include <vector>
36#include <officecfg/Office/Compatibility.hxx>
37#include <osl/diagnose.h>
38
39using namespace ::com::sun::star::beans;
40using namespace ::com::sun::star::document;
41using namespace ::com::sun::star::uno;
42
44{
45 std::vector< SvtCompatibilityEntry > m_aList;
46};
47
49 : SfxTabPage(pPage, pController, "modules/swriter/ui/optcompatpage.ui", "OptCompatPage", &rSet)
50 , m_pWrtShell(nullptr)
52 , m_nSavedOptions(0)
53 , m_bSavedMSFormsMenuOption(false)
54 , m_xMain(m_xBuilder->weld_frame("compatframe"))
55 , m_xGlobalOptionsFrame(m_xBuilder->weld_frame("globalcompatframe"))
56 , m_xFormattingLB(m_xBuilder->weld_combo_box("format"))
57 , m_xGlobalOptionsLB(m_xBuilder->weld_combo_box("globaloptions"))
58 , m_xOptionsLB(m_xBuilder->weld_tree_view("options"))
59 , m_xGlobalOptionsCLB(m_xBuilder->weld_tree_view("globaloptioncheckbox"))
60 , m_xDefaultPB(m_xBuilder->weld_button("default"))
61{
62 m_xOptionsLB->enable_toggle_buttons(weld::ColumnToggleType::Check);
64
65 int nPos = 0;
66 for (int i = static_cast<int>(SvtCompatibilityEntry::Index::Module) + 1;
67 i < static_cast<int>(SvtCompatibilityEntry::Index::INVALID) - 1; // omit AddTableLineSpacing
68 ++i)
69 {
70 int nCoptIdx = i - 2; /* Do not consider "Name" & "Module" indexes */
71
72 const OUString sEntry = m_xFormattingLB->get_text(nCoptIdx);
73 m_xOptionsLB->append();
74 m_xOptionsLB->set_toggle(nPos, TRISTATE_FALSE);
75 m_xOptionsLB->set_text(nPos, sEntry, 0);
76 ++nPos;
77 }
78
79 m_sUserEntry = m_xFormattingLB->get_text(m_xFormattingLB->get_count() - 1);
80
81 m_xFormattingLB->clear();
82
83 // Set MSOCompatibleFormsMenu entry attributes
84 const bool bReadOnly = officecfg::Office::Compatibility::View::MSCompatibleFormsMenu::isReadOnly();
85 m_xGlobalOptionsCLB->set_sensitive(!bReadOnly);
86
87 m_xGlobalOptionsCLB->append();
89 m_xGlobalOptionsCLB->set_toggle(0, bChecked ? TRISTATE_TRUE : TRISTATE_FALSE);
90 m_xGlobalOptionsCLB->set_text(0, m_xGlobalOptionsLB->get_text(0), 0);
91
92 m_xGlobalOptionsLB->clear();
93
94 // tdf#125799, we let only the doc options grow/shrink but give this one more than its bare
95 // min request height because there's only one row in it and that looks somewhat abrupt
96 m_xGlobalOptionsCLB->set_size_request(-1, m_xGlobalOptionsCLB->get_preferred_size().Height() * 2);
97
99
100 // set handler
101 m_xFormattingLB->connect_changed( LINK( this, SwCompatibilityOptPage, SelectHdl ) );
102 m_xDefaultPB->connect_clicked( LINK( this, SwCompatibilityOptPage, UseAsDefaultHdl ) );
103}
104
106{
107}
108
109static sal_uInt32 convertBools2Ulong_Impl
110(
111 bool _bAddSpacing,
112 bool _bAddSpacingAtPages,
113 bool _bUseOurTabStops,
114 bool _bNoExtLeading,
115 bool _bUseLineSpacing,
116 bool _bAddTableSpacing,
117 bool _bAddTableLineSpacing,
118 bool _bUseObjPos,
119 bool _bUseOurTextWrapping,
120 bool _bConsiderWrappingStyle,
121 bool _bExpandWordSpace,
122 bool _bProtectForm,
123 bool _bMsWordCompTrailingBlanks,
124 bool bSubtractFlysAnchoredAtFlys,
125 bool bEmptyDbFieldHidesPara,
126 bool bUseVariableWidthNBSP
127)
128{
129 sal_uInt32 nRet = 0;
130 sal_uInt32 nSetBit = 1;
131
132 if ( _bAddSpacing )
133 nRet |= nSetBit;
134 nSetBit = nSetBit << 1;
135 if ( _bAddSpacingAtPages )
136 nRet |= nSetBit;
137 nSetBit = nSetBit << 1;
138 if ( _bUseOurTabStops )
139 nRet |= nSetBit;
140 nSetBit = nSetBit << 1;
141 if ( _bNoExtLeading )
142 nRet |= nSetBit;
143 nSetBit = nSetBit << 1;
144 if ( _bUseLineSpacing )
145 nRet |= nSetBit;
146 nSetBit = nSetBit << 1;
147 if ( _bAddTableSpacing )
148 nRet |= nSetBit;
149 nSetBit = nSetBit << 1;
150 if (_bAddTableLineSpacing)
151 nRet |= nSetBit;
152 nSetBit = nSetBit << 1;
153 if ( _bUseObjPos )
154 nRet |= nSetBit;
155 nSetBit = nSetBit << 1;
156 if ( _bUseOurTextWrapping )
157 nRet |= nSetBit;
158 nSetBit = nSetBit << 1;
159 if ( _bConsiderWrappingStyle )
160 nRet |= nSetBit;
161 nSetBit = nSetBit << 1;
162 if ( _bExpandWordSpace )
163 nRet |= nSetBit;
164 nSetBit = nSetBit << 1;
165 if ( _bProtectForm )
166 nRet |= nSetBit;
167 nSetBit = nSetBit << 1;
168 if ( _bMsWordCompTrailingBlanks )
169 nRet |= nSetBit;
170 nSetBit = nSetBit << 1;
171 if (bSubtractFlysAnchoredAtFlys)
172 nRet |= nSetBit;
173 nSetBit = nSetBit << 1;
174 if (bEmptyDbFieldHidesPara)
175 nRet |= nSetBit;
176 nSetBit = nSetBit << 1;
177 if (bUseVariableWidthNBSP)
178 nRet |= nSetBit;
179
180 return nRet;
181}
182
184{
185 // init objectshell and detect document name
186 OUString sDocTitle;
187 SfxObjectShell* pObjShell = nullptr;
188 if ( const SwPtrItem* pItem = rSet.GetItemIfSet( FN_PARAM_WRTSHELL, false ) )
189 m_pWrtShell = static_cast<SwWrtShell*>(pItem->GetValue());
190 if ( m_pWrtShell )
191 {
192 pObjShell = m_pWrtShell->GetView().GetDocShell();
193 if ( pObjShell )
194 sDocTitle = pObjShell->GetTitle();
195 }
196 else
197 {
198 m_xMain->set_sensitive(false);
199 m_xGlobalOptionsFrame->set_sensitive(false);
200 }
201 const OUString& rText = m_xMain->get_label();
202 m_xMain->set_label(rText.replaceAll("%DOCNAME", sDocTitle));
203
204 // loading file formats
205 const std::vector< SvtCompatibilityEntry > aList = m_aConfigItem.GetList();
206
207 for ( const SvtCompatibilityEntry& rEntry : aList )
208 {
209 const OUString sEntryName = rEntry.getValue<OUString>( SvtCompatibilityEntry::Index::Name );
210 const bool bIsUserEntry = ( sEntryName == SvtCompatibilityEntry::USER_ENTRY_NAME );
211 const bool bIsDefaultEntry = ( sEntryName == SvtCompatibilityEntry::DEFAULT_ENTRY_NAME );
212
213 m_pImpl->m_aList.push_back( rEntry );
214
215 if ( bIsDefaultEntry )
216 continue;
217
218 OUString sNewEntry;
219 if ( bIsUserEntry )
220 sNewEntry = m_sUserEntry;
221
222 else if ( pObjShell && !sEntryName.isEmpty() )
223 {
224 SfxFilterContainer* pFacCont = pObjShell->GetFactory().GetFilterContainer();
225 std::shared_ptr<const SfxFilter> pFilter = pFacCont->GetFilter4FilterName( sEntryName );
226 if ( pFilter )
227 sNewEntry = pFilter->GetUIName();
228 }
229
230 if ( sNewEntry.isEmpty() )
231 sNewEntry = sEntryName;
232
233 sal_uInt32 nOptions = convertBools2Ulong_Impl(
234 rEntry.getValue<bool>( SvtCompatibilityEntry::Index::AddSpacing ),
236 rEntry.getValue<bool>( SvtCompatibilityEntry::Index::UseOurTabStops ),
237 rEntry.getValue<bool>( SvtCompatibilityEntry::Index::NoExtLeading ),
238 rEntry.getValue<bool>( SvtCompatibilityEntry::Index::UseLineSpacing ),
239 rEntry.getValue<bool>( SvtCompatibilityEntry::Index::AddTableSpacing ),
244 rEntry.getValue<bool>( SvtCompatibilityEntry::Index::ExpandWordSpace ),
245 rEntry.getValue<bool>( SvtCompatibilityEntry::Index::ProtectForm ),
250 m_xFormattingLB->append(OUString::number(nOptions), sNewEntry);
251 }
252}
253
255{
256 sal_uInt32 nOptions = m_xFormattingLB->get_active_id().toUInt32();
257 SetCurrentOptions(nOptions);
258}
259
261{
262 std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(GetFrameWeld(), "modules/swriter/ui/querydefaultcompatdialog.ui"));
263 std::unique_ptr<weld::MessageDialog> xQueryBox(xBuilder->weld_message_dialog("QueryDefaultCompatDialog"));
264 if (xQueryBox->run() != RET_YES)
265 return;
266
267 auto pItem = std::find_if(m_pImpl->m_aList.begin(), m_pImpl->m_aList.end(),
268 [](const SvtCompatibilityEntry& rItem)
269 {
270 const OUString sEntryName = rItem.getValue<OUString>( SvtCompatibilityEntry::Index::Name );
271 const bool bIsDefaultEntry = ( sEntryName == SvtCompatibilityEntry::DEFAULT_ENTRY_NAME );
272 return bIsDefaultEntry;
273 });
274 if (pItem != m_pImpl->m_aList.end())
275 {
276 const sal_Int32 nCount = m_xOptionsLB->n_children();
277 for ( sal_Int32 i = 0; i < nCount; ++i )
278 {
279 bool bChecked = m_xOptionsLB->get_toggle(i);
280
281 int nCoptIdx = i + 2; /* Consider "Name" & "Module" indexes */
282 pItem->setValue<bool>( SvtCompatibilityEntry::Index(nCoptIdx), bChecked );
284 {
285 bool const isLineSpacing = m_xOptionsLB->get_toggle(i) == TRISTATE_TRUE;
286 pItem->setValue<bool>(SvtCompatibilityEntry::Index::AddTableLineSpacing, isLineSpacing);
287 }
288 else
289 {
290 assert(m_xOptionsLB->get_toggle(i) != TRISTATE_INDET);
291 }
292 }
293 }
294
295 WriteOptions();
296}
297
299{
300 const int nCount = m_xOptionsLB->n_children();
301 OSL_ENSURE( nCount <= 32, "SwCompatibilityOptPage::Reset(): entry overflow" );
302 for (int i = 0; i < nCount; ++i)
303 {
304 bool bChecked = ( ( nOptions & 0x00000001 ) == 0x00000001 );
307 { // hack: map 2 bools to 1 tristate
308 nOptions = nOptions >> 1;
309 if (value == TRISTATE_TRUE
310 && (nOptions & 0x00000001) != 0x00000001) // ADD_PARA_LINE_SPACING_TO_TABLE_CELLS
311 {
312 value = TRISTATE_INDET; // 3 values possible here
313 }
314 }
315 m_xOptionsLB->set_toggle(i, value);
316 nOptions = nOptions >> 1;
317 }
318}
319
321{
322 sal_uInt32 nRet = 0;
323 if ( m_pWrtShell )
324 {
325 const IDocumentSettingAccess& rIDocumentSettingAccess = m_pWrtShell->getIDocumentSettingAccess();
327 rIDocumentSettingAccess.get( DocumentSettingId::PARA_SPACE_MAX ),
328 rIDocumentSettingAccess.get( DocumentSettingId::PARA_SPACE_MAX_AT_PAGES ),
329 !rIDocumentSettingAccess.get( DocumentSettingId::TAB_COMPAT ),
330 !rIDocumentSettingAccess.get( DocumentSettingId::ADD_EXT_LEADING ),
331 rIDocumentSettingAccess.get( DocumentSettingId::OLD_LINE_SPACING ),
334 rIDocumentSettingAccess.get( DocumentSettingId::USE_FORMER_OBJECT_POS ),
335 rIDocumentSettingAccess.get( DocumentSettingId::USE_FORMER_TEXT_WRAPPING ),
338 rIDocumentSettingAccess.get( DocumentSettingId::PROTECT_FORM ),
339 rIDocumentSettingAccess.get( DocumentSettingId::MS_WORD_COMP_TRAILING_BLANKS ),
340 rIDocumentSettingAccess.get( DocumentSettingId::SUBTRACT_FLYS ),
341 rIDocumentSettingAccess.get( DocumentSettingId::EMPTY_DB_FIELD_HIDES_PARA ),
342 rIDocumentSettingAccess.get( DocumentSettingId::USE_VARIABLE_WIDTH_NBSP ) );
343 }
344 return nRet;
345}
346
348{
350 for ( const auto& rItem : m_pImpl->m_aList )
352}
353
354std::unique_ptr<SfxTabPage> SwCompatibilityOptPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrSet)
355{
356 return std::make_unique<SwCompatibilityOptPage>(pPage, pController, *rAttrSet);
357}
358
360{
361 bool bModified = false;
362 if ( m_pWrtShell )
363 {
364 sal_uInt32 nSavedOptions = m_nSavedOptions;
365 const int nCount = m_xOptionsLB->n_children();
366 OSL_ENSURE( nCount <= 32, "SwCompatibilityOptPage::Reset(): entry overflow" );
367
368 for (int i = 0; i < nCount; ++i)
369 {
370 TriState const current = m_xOptionsLB->get_toggle(i);
371 TriState saved = ((nSavedOptions & 0x00000001) == 0x00000001) ? TRISTATE_TRUE : TRISTATE_FALSE;
373 { // hack: map 2 bools to 1 tristate
374 nSavedOptions = nSavedOptions >> 1;
375 if (saved == TRISTATE_TRUE
376 && ((nSavedOptions & 0x00000001) != 0x00000001))
377 {
378 saved = TRISTATE_INDET;
379 }
380 }
381 if (current != saved)
382 {
383 bool const bChecked(current != TRISTATE_FALSE);
384 assert(current != TRISTATE_INDET); // can't *change* it to that
385 int nCoptIdx = i + 2; /* Consider "Name" & "Module" indexes */
386 switch ( SvtCompatibilityEntry::Index(nCoptIdx) )
387 {
389 m_pWrtShell->SetParaSpaceMax( bChecked );
390 break;
391
394 break;
395
397 m_pWrtShell->SetTabCompat( !bChecked );
398 break;
399
401 m_pWrtShell->SetAddExtLeading( !bChecked );
402 break;
403
406 break;
407
410 break;
411
414 break;
415
418 break;
419
422 break;
423
426 break;
427
429 m_pWrtShell->SetProtectForm( bChecked );
430 break;
431
434 break;
435
438 break;
439
442 break;
443
447 break;
448
449 default:
450 break;
451 }
452 bModified = true;
453 }
454
455 nSavedOptions = nSavedOptions >> 1;
456 }
457 }
458
459 if ( bModified )
460 WriteOptions();
461
462 bool bNewMSFormsMenuOption = m_xGlobalOptionsCLB->get_toggle(0);
463 if (m_bSavedMSFormsMenuOption != bNewMSFormsMenuOption)
464 {
465 std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
466 officecfg::Office::Compatibility::View::MSCompatibleFormsMenu::set(bNewMSFormsMenuOption, batch);
467 batch->commit();
468
469 m_bSavedMSFormsMenuOption = bNewMSFormsMenuOption;
470 bModified = true;
471
472 // Show a message about that the option needs a restart to be applied
473 {
474 SolarMutexGuard aGuard;
477 {
478 GetDialogController()->response(RET_OK);
479 }
480 }
481 }
482
483 return bModified;
484}
485
487{
488 m_xOptionsLB->select(0);
489
490 sal_uInt32 nOptions = GetDocumentOptions();
491 SetCurrentOptions( nOptions );
492 m_nSavedOptions = nOptions;
493
496}
497
498/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
@ CONSIDER_WRAP_ON_OBJECT_POSITION
@ DO_NOT_JUSTIFY_LINES_WITH_MANUAL_BREAK
@ ADD_PARA_LINE_SPACING_TO_TABLE_CELLS
::std::unique_ptr< XmlIdRegistry_Impl > m_pImpl
static std::unique_ptr< weld::Builder > CreateBuilder(weld::Widget *pParent, const OUString &rUIFile, bool bMobile=false, sal_uInt64 nLOKWindowId=0)
Provides access to settings of a document.
virtual bool get(DocumentSettingId id) const =0
Return the specified document setting.
virtual void set(DocumentSettingId id, bool value)=0
Set the specified document setting.
std::shared_ptr< const SfxFilter > GetFilter4FilterName(const OUString &rName, SfxFilterFlags nMust=SfxFilterFlags::NONE, SfxFilterFlags nDont=SFX_FILTER_NOTINSTALLED) const
const T * GetItemIfSet(TypedWhichId< T > nWhich, bool bSrchInParent=true) const
SfxFilterContainer * GetFilterContainer() const
virtual SfxObjectFactory & GetFactory() const=0
OUString GetTitle(sal_uInt16 nMaxLen=0) const
SfxOkDialogController * GetDialogController() const
weld::Window * GetFrameWeld() const
static constexpr OUStringLiteral DEFAULT_ENTRY_NAME
static constexpr OUStringLiteral USER_ENTRY_NAME
std::vector< SvtCompatibilityEntry > GetList() const
void AppendItem(const SvtCompatibilityEntry &aItem)
std::unique_ptr< weld::ComboBox > m_xGlobalOptionsLB
Definition: optcomp.hxx:49
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *rAttrSet)
Definition: optcomp.cxx:354
std::unique_ptr< weld::TreeView > m_xGlobalOptionsCLB
Definition: optcomp.hxx:51
std::unique_ptr< weld::Frame > m_xGlobalOptionsFrame
Definition: optcomp.hxx:47
SvtCompatibilityOptions m_aConfigItem
Definition: optcomp.hxx:34
void SetCurrentOptions(sal_uInt32 nOptions)
Definition: optcomp.cxx:298
sal_uInt32 m_nSavedOptions
Definition: optcomp.hxx:42
sal_uInt32 GetDocumentOptions() const
Definition: optcomp.cxx:320
bool m_bSavedMSFormsMenuOption
Definition: optcomp.hxx:43
std::unique_ptr< weld::Frame > m_xMain
Definition: optcomp.hxx:46
SwCompatibilityOptPage(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rSet)
Definition: optcomp.cxx:48
void InitControls(const SfxItemSet &rSet)
Definition: optcomp.cxx:183
std::unique_ptr< weld::TreeView > m_xOptionsLB
Definition: optcomp.hxx:50
std::unique_ptr< weld::Button > m_xDefaultPB
Definition: optcomp.hxx:52
SwWrtShell * m_pWrtShell
Definition: optcomp.hxx:38
std::unique_ptr< weld::ComboBox > m_xFormattingLB
Definition: optcomp.hxx:48
virtual ~SwCompatibilityOptPage() override
Definition: optcomp.cxx:105
virtual bool FillItemSet(SfxItemSet *rSet) override
Definition: optcomp.cxx:359
virtual void Reset(const SfxItemSet *rSet) override
Definition: optcomp.cxx:486
std::unique_ptr< SwCompatibilityOptPage_Impl > m_pImpl
Definition: optcomp.hxx:40
IDocumentSettingAccess const & getIDocumentSettingAccess() const
Definition: doc.cxx:190
void SetProtectForm(bool _bProtectForm)
Definition: viewsh.cxx:1008
void SetParaSpaceMax(bool bNew)
Definition: viewsh.cxx:868
void SetUseFormerTextWrapping(bool _bUseFormerTextWrapping)
Definition: viewsh.cxx:983
const IDocumentSettingAccess & getIDocumentSettingAccess() const
Provides access to the document setting interface.
Definition: viewsh.cxx:2817
void SetDoNotJustifyLinesWithManualBreak(bool _bDoNotJustifyLinesWithManualBreak)
Definition: viewsh.cxx:996
void SetUseFormerLineSpacing(bool _bUseFormerLineSpacing)
Sets if former formatting of text lines with proportional line spacing should used.
Definition: viewsh.cxx:943
void SetUseFormerObjectPositioning(bool _bUseFormerObjPos)
Sets IDocumentSettingAccess if former object positioning should be used.
Definition: viewsh.cxx:960
void SetParaSpaceMaxAtPages(bool bNew)
Definition: viewsh.cxx:880
void SetAddExtLeading(bool bNew)
Definition: viewsh.cxx:904
SwDoc * GetDoc() const
Definition: viewsh.hxx:308
void SetConsiderWrapOnObjPos(bool _bConsiderWrapOnObjPos)
Definition: viewsh.cxx:972
void SetTabCompat(bool bNew)
Definition: viewsh.cxx:892
void SetMsWordCompTrailingBlanks(bool _bMsWordCompTrailingBlanks)
Definition: viewsh.cxx:1014
void SetSubtractFlysAnchoredAtFlys(bool bSubtractFlysAnchoredAtFlys)
Definition: viewsh.cxx:1026
void SetAddParaSpacingToTableCells(bool _bAddParaSpacingToTableCells)
Sets if paragraph and table spacing is added at bottom of table cells.
Definition: viewsh.cxx:923
void SetEmptyDbFieldHidesPara(bool bEmptyDbFieldHidesPara)
Definition: viewsh.cxx:1032
SwDocShell * GetDocShell()
Definition: view.cxx:1193
Used by the UI to modify the document model.
Definition: wrtsh.hxx:97
const SwView & GetView() const
Definition: wrtsh.hxx:443
static std::shared_ptr< ConfigurationChanges > create()
#define FN_PARAM_WRTSHELL
Definition: cmdid.h:829
Any value
int nCount
weld::Window * GetFrameWeld(const SfxFrame *pFrame)
Definition: dialoghelp.cxx:19
bool bReadOnly
TriState
TRISTATE_FALSE
TRISTATE_INDET
TRISTATE_TRUE
sal_uInt16 nPos
Reference< XComponentContext > getProcessComponentContext()
int i
RESTART_REASON_MSCOMPATIBLE_FORMS_MENU
SVT_DLLPUBLIC bool executeRestartDialog(css::uno::Reference< css::uno::XComponentContext > const &context, weld::Window *parent, RestartReason reason)
css::uno::Reference< css::linguistic2::XProofreadingIterator > get(css::uno::Reference< css::uno::XComponentContext > const &context)
static sal_uInt32 convertBools2Ulong_Impl(bool _bAddSpacing, bool _bAddSpacingAtPages, bool _bUseOurTabStops, bool _bNoExtLeading, bool _bUseLineSpacing, bool _bAddTableSpacing, bool _bAddTableLineSpacing, bool _bUseObjPos, bool _bUseOurTextWrapping, bool _bConsiderWrappingStyle, bool _bExpandWordSpace, bool _bProtectForm, bool _bMsWordCompTrailingBlanks, bool bSubtractFlysAnchoredAtFlys, bool bEmptyDbFieldHidesPara, bool bUseVariableWidthNBSP)
Definition: optcomp.cxx:110
IMPL_LINK_NOARG(SwCompatibilityOptPage, SelectHdl, weld::ComboBox &, void)
Definition: optcomp.cxx:254
static SfxItemSet & rSet
std::vector< SvtCompatibilityEntry > m_aList
Definition: optcomp.cxx:45
RET_OK
RET_YES