Best effort to create directories of SAL_LOG_FILE
[LibreOffice.git] / svx / source / dialog / optgrid.cxx
blob6cee157cc00556ea88affded9299df4dc8d26c06
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 .
20 #include <svl/intitem.hxx>
21 #include <svtools/unitconv.hxx>
22 #include <unotools/localedatawrapper.hxx>
23 #include <unotools/syslocale.hxx>
24 #include <officecfg/Office/Writer.hxx>
25 #include <officecfg/Office/Calc.hxx>
26 #include <officecfg/Office/WriterWeb.hxx>
27 #include <officecfg/Office/Impress.hxx>
28 #include <officecfg/Office/Draw.hxx>
29 #include <sfx2/viewfrm.hxx>
30 #include <vcl/commandinfoprovider.hxx>
32 #include <svx/svxids.hrc>
33 #include <svx/optgrid.hxx>
34 #include <svx/dlgutil.hxx>
36 // local functions
37 static void lcl_GetMinMax(weld::MetricSpinButton const& rField, sal_Int64& nMin, sal_Int64& nMax)
39 rField.get_range(nMin, nMax, FieldUnit::TWIP);
40 nMin = rField.denormalize(nMin);
41 nMax = rField.denormalize(nMax);
44 static void lcl_SetMinMax(weld::MetricSpinButton& rField, sal_Int64 nMin, sal_Int64 nMax)
46 rField.set_range(rField.normalize(nMin), rField.normalize(nMax), FieldUnit::TWIP);
49 static bool lcl_IsMetricSystem()
51 SvtSysLocale aSysLocale;
52 MeasurementSystem eSys = aSysLocale.GetLocaleData().getMeasurementSystemEnum();
54 return (eSys == MeasurementSystem::Metric);
57 SvxOptionsGrid::SvxOptionsGrid() :
58 nFldDrawX ( 100 ),
59 nFldDivisionX ( 0 ),
60 nFldDrawY ( 100 ),
61 nFldDivisionY ( 0 ),
62 bUseGridsnap ( false ),
63 bSynchronize ( true ),
64 bGridVisible ( false ),
65 bEqualGrid ( true )
69 SvxGridItem* SvxGridItem::Clone( SfxItemPool* ) const
71 return new SvxGridItem( *this );
74 bool SvxGridItem::operator==( const SfxPoolItem& rAttr ) const
76 assert(SfxPoolItem::operator==(rAttr));
78 const SvxGridItem& rItem = static_cast<const SvxGridItem&>(rAttr);
80 return ( bUseGridsnap == rItem.bUseGridsnap &&
81 bSynchronize == rItem.bSynchronize &&
82 bGridVisible == rItem.bGridVisible &&
83 bEqualGrid == rItem.bEqualGrid &&
84 nFldDrawX == rItem.nFldDrawX &&
85 nFldDivisionX== rItem.nFldDivisionX&&
86 nFldDrawY == rItem.nFldDrawY &&
87 nFldDivisionY== rItem.nFldDivisionY );
90 bool SvxGridItem::GetPresentation
92 SfxItemPresentation /*ePres*/,
93 MapUnit /*eCoreUnit*/,
94 MapUnit /*ePresUnit*/,
95 OUString& rText, const IntlWrapper&
96 ) const
98 rText = "SvxGridItem";
99 return true;
102 // TabPage Screen Settings
103 SvxGridTabPage::SvxGridTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rCoreSet)
104 : SfxTabPage(pPage, pController, "svx/ui/optgridpage.ui", "OptGridPage", &rCoreSet)
105 , bAttrModified(false)
106 , m_Emode(WRITER_MODE)
107 , m_xCbxUseGridsnap(m_xBuilder->weld_check_button("usegridsnap"))
108 , m_xCbxUseGridsnapImg(m_xBuilder->weld_widget("lockusegridsnap"))
109 , m_xCbxGridVisible(m_xBuilder->weld_check_button("gridvisible"))
110 , m_xCbxGridVisibleImg(m_xBuilder->weld_widget("lockgridvisible"))
111 , m_xMtrFldDrawX(m_xBuilder->weld_metric_spin_button("mtrflddrawx", FieldUnit::CM))
112 , m_xMtrFldDrawXImg(m_xBuilder->weld_widget("lockmtrflddrawx"))
113 , m_xMtrFldDrawY(m_xBuilder->weld_metric_spin_button("mtrflddrawy", FieldUnit::CM))
114 , m_xMtrFldDrawYImg(m_xBuilder->weld_widget("lockmtrflddrawy"))
115 , m_xNumFldDivisionX(m_xBuilder->weld_spin_button("numflddivisionx"))
116 , m_xNumFldDivisionXImg(m_xBuilder->weld_widget("locknumflddivisionx"))
117 , m_xNumFldDivisionY(m_xBuilder->weld_spin_button("numflddivisiony"))
118 , m_xNumFldDivisionYImg(m_xBuilder->weld_widget("locknumflddivisiony"))
119 , m_xCbxSynchronize(m_xBuilder->weld_check_button("synchronize"))
120 , m_xCbxSynchronizeImg(m_xBuilder->weld_widget("locksynchronize"))
121 , m_xSnapFrames(m_xBuilder->weld_widget("snapframes"))
122 , m_xCbxSnapHelplines(m_xBuilder->weld_check_button("snaphelplines"))
123 , m_xCbxSnapHelplinesImg(m_xBuilder->weld_widget("locksnaphelplines"))
124 , m_xCbxSnapBorder(m_xBuilder->weld_check_button("snapborder"))
125 , m_xCbxSnapBorderImg(m_xBuilder->weld_widget("locksnapborder"))
126 , m_xCbxSnapFrame(m_xBuilder->weld_check_button("snapframe"))
127 , m_xCbxSnapFrameImg(m_xBuilder->weld_widget("locksnapframe"))
128 , m_xCbxSnapPoints(m_xBuilder->weld_check_button("snappoints"))
129 , m_xCbxSnapPointsImg(m_xBuilder->weld_widget("locksnappoints"))
130 , m_xMtrFldSnapArea(m_xBuilder->weld_metric_spin_button("mtrfldsnaparea", FieldUnit::PIXEL))
131 , m_xMtrFldSnapAreaImg(m_xBuilder->weld_widget("lockmtrfldsnaparea"))
132 , m_xCbxOrtho(m_xBuilder->weld_check_button("ortho"))
133 , m_xCbxOrthoImg(m_xBuilder->weld_widget("lockortho"))
134 , m_xCbxBigOrtho(m_xBuilder->weld_check_button("bigortho"))
135 , m_xCbxBigOrthoImg(m_xBuilder->weld_widget("lockbigortho"))
136 , m_xCbxRotate(m_xBuilder->weld_check_button("rotate"))
137 , m_xCbxRotateImg(m_xBuilder->weld_widget("lockrotate"))
138 , m_xMtrFldAngle(m_xBuilder->weld_metric_spin_button("mtrfldangle", FieldUnit::DEGREE))
139 , m_xMtrFldBezAngle(m_xBuilder->weld_metric_spin_button("mtrfldbezangle", FieldUnit::DEGREE))
140 , m_xMtrFldBezAngleImg(m_xBuilder->weld_widget("lockmtrfldbezangle"))
142 // This page requires exchange Support
143 SetExchangeSupport();
145 // Set Metrics
146 FieldUnit eFUnit = GetModuleFieldUnit( rCoreSet );
147 sal_Int64 nMin, nMax;
149 lcl_GetMinMax(*m_xMtrFldDrawX, nMin, nMax);
150 SetFieldUnit( *m_xMtrFldDrawX, eFUnit, true );
151 lcl_SetMinMax(*m_xMtrFldDrawX, nMin, nMax);
153 lcl_GetMinMax(*m_xMtrFldDrawY, nMin, nMax);
154 SetFieldUnit( *m_xMtrFldDrawY, eFUnit, true );
155 lcl_SetMinMax(*m_xMtrFldDrawY, nMin, nMax);
157 if (const SfxUInt16Item* pItem = rCoreSet.GetItemIfSet(SID_HTML_MODE, false))
159 if (0 != (pItem->GetValue() & HTMLMODE_ON))
160 m_Emode = HTML_MODE;
163 if (m_Emode != HTML_MODE)
165 SfxViewFrame* pCurrent = SfxViewFrame::Current();
166 OUString aModuleName = vcl::CommandInfoProvider::GetModuleIdentifier(pCurrent->GetFrame().GetFrameInterface());
167 std::u16string_view sModulename = aModuleName.subView(aModuleName.lastIndexOf('.') + 1);
168 if (sModulename.starts_with(u"Text"))
169 m_Emode = WRITER_MODE;
170 else if (sModulename.starts_with(u"Spreadsheet"))
171 m_Emode = CALC_MODE;
172 else if (sModulename.starts_with(u"Presentation"))
173 m_Emode = IMPRESS_MODE;
174 else if (sModulename.starts_with(u"Drawing"))
175 m_Emode = DRAW_MODE;
178 m_xCbxRotate->connect_toggled(LINK(this, SvxGridTabPage, ClickRotateHdl_Impl));
179 Link<weld::Toggleable&,void> aLink = LINK(this, SvxGridTabPage, ChangeGridsnapHdl_Impl);
180 m_xCbxUseGridsnap->connect_toggled(aLink);
181 m_xCbxSynchronize->connect_toggled(aLink);
182 m_xCbxGridVisible->connect_toggled(aLink);
183 m_xMtrFldDrawX->connect_value_changed(
184 LINK( this, SvxGridTabPage, ChangeDrawHdl_Impl ) );
185 m_xMtrFldDrawY->connect_value_changed(
186 LINK( this, SvxGridTabPage, ChangeDrawHdl_Impl ) );
187 m_xNumFldDivisionX->connect_value_changed(
188 LINK( this, SvxGridTabPage, ChangeDivisionHdl_Impl ) );
189 m_xNumFldDivisionY->connect_value_changed(
190 LINK( this, SvxGridTabPage, ChangeDivisionHdl_Impl ) );
193 SvxGridTabPage::~SvxGridTabPage()
197 std::unique_ptr<SfxTabPage> SvxGridTabPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rAttrSet)
199 return std::make_unique<SvxGridTabPage>(pPage, pController, rAttrSet);
202 OUString SvxGridTabPage::GetAllStrings()
204 OUString sAllStrings;
205 OUString labels[]
206 = { "label1", "label2", "flddrawx", "flddrawy", "label6", "label7", "label3",
207 "divisionx", "label4", "divisiony", "label5", "label8", "label9" };
209 for (const auto& label : labels)
211 if (const auto& pString = m_xBuilder->weld_label(label))
212 sAllStrings += pString->get_label() + " ";
215 OUString checkButton[]
216 = { "usegridsnap", "gridvisible", "synchronize", "snaphelplines", "snapborder",
217 "snapframe", "snappoints", "ortho", "bigortho", "rotate" };
219 for (const auto& check : checkButton)
221 if (const auto& pString = m_xBuilder->weld_check_button(check))
222 sAllStrings += pString->get_label() + " ";
225 return sAllStrings.replaceAll("_", "");
228 bool SvxGridTabPage::FillItemSet( SfxItemSet* rCoreSet )
230 if ( bAttrModified )
232 SvxGridItem aGridItem( SID_ATTR_GRID_OPTIONS );
234 aGridItem.bUseGridsnap = m_xCbxUseGridsnap->get_active();
235 aGridItem.bSynchronize = m_xCbxSynchronize->get_active();
236 aGridItem.bGridVisible = m_xCbxGridVisible->get_active();
238 MapUnit eUnit = rCoreSet->GetPool()->GetMetric( SID_ATTR_GRID_OPTIONS );
239 tools::Long nX = GetCoreValue( *m_xMtrFldDrawX, eUnit );
240 tools::Long nY = GetCoreValue( *m_xMtrFldDrawY, eUnit );
242 aGridItem.nFldDrawX = static_cast<sal_uInt32>(nX);
243 aGridItem.nFldDrawY = static_cast<sal_uInt32>(nY);
244 aGridItem.nFldDivisionX = static_cast<tools::Long>(m_xNumFldDivisionX->get_value() - 1);
245 aGridItem.nFldDivisionY = static_cast<tools::Long>(m_xNumFldDivisionY->get_value() - 1);
247 rCoreSet->Put( aGridItem );
249 return bAttrModified;
252 void SvxGridTabPage::Reset( const SfxItemSet* rSet )
254 const SvxGridItem* pGridAttr = nullptr;
256 if( (pGridAttr = rSet->GetItemIfSet( SID_ATTR_GRID_OPTIONS , false )) )
258 bool bReadOnly = false;
259 switch (m_Emode)
261 case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Option::SnapToGrid::isReadOnly(); break;
262 case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Option::SnapToGrid::isReadOnly(); break;
263 case IMPRESS_MODE: bReadOnly = officecfg::Office::Impress::Grid::Option::SnapToGrid::isReadOnly(); break;
264 case DRAW_MODE: bReadOnly = officecfg::Office::Draw::Grid::Option::SnapToGrid::isReadOnly(); break;
265 case CALC_MODE: bReadOnly = officecfg::Office::Calc::Grid::Option::SnapToGrid::isReadOnly(); break;
266 default:
267 break;
269 m_xCbxUseGridsnap->set_active(pGridAttr->bUseGridsnap);
270 m_xCbxUseGridsnap->set_sensitive(!bReadOnly);
271 m_xCbxUseGridsnapImg->set_visible(bReadOnly);
273 switch (m_Emode)
275 case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Option::Synchronize::isReadOnly(); break;
276 case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Option::Synchronize::isReadOnly(); break;
277 case IMPRESS_MODE: bReadOnly = officecfg::Office::Impress::Grid::Option::Synchronize::isReadOnly(); break;
278 case DRAW_MODE: bReadOnly = officecfg::Office::Draw::Grid::Option::Synchronize::isReadOnly(); break;
279 case CALC_MODE: bReadOnly = officecfg::Office::Calc::Grid::Option::Synchronize::isReadOnly(); break;
280 default:
281 break;
283 m_xCbxSynchronize->set_active(pGridAttr->bSynchronize);
284 m_xCbxSynchronize->set_sensitive(!bReadOnly);
285 m_xCbxSynchronizeImg->set_visible(bReadOnly);
287 switch (m_Emode)
289 case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Option::VisibleGrid::isReadOnly(); break;
290 case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Option::VisibleGrid::isReadOnly(); break;
291 case IMPRESS_MODE: bReadOnly = officecfg::Office::Impress::Grid::Option::VisibleGrid::isReadOnly(); break;
292 case DRAW_MODE: bReadOnly = officecfg::Office::Draw::Grid::Option::VisibleGrid::isReadOnly(); break;
293 case CALC_MODE: bReadOnly = officecfg::Office::Calc::Grid::Option::VisibleGrid::isReadOnly(); break;
294 default:
295 break;
297 m_xCbxGridVisible->set_active(pGridAttr->bGridVisible);
298 m_xCbxGridVisible->set_sensitive(!bReadOnly);
299 m_xCbxGridVisibleImg->set_visible(bReadOnly);
301 MapUnit eUnit = rSet->GetPool()->GetMetric( SID_ATTR_GRID_OPTIONS );
302 SetMetricValue( *m_xMtrFldDrawX , pGridAttr->nFldDrawX, eUnit );
303 SetMetricValue( *m_xMtrFldDrawY , pGridAttr->nFldDrawY, eUnit );
305 switch (m_Emode)
307 case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Resolution::XAxis::isReadOnly(); break;
308 case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Resolution::XAxis::isReadOnly(); break;
309 case IMPRESS_MODE:
311 if (lcl_IsMetricSystem())
312 bReadOnly = officecfg::Office::Impress::Grid::Resolution::XAxis::Metric::isReadOnly();
313 else
314 bReadOnly = officecfg::Office::Impress::Grid::Resolution::XAxis::NonMetric::isReadOnly();
316 break;
317 case DRAW_MODE:
319 if (lcl_IsMetricSystem())
320 bReadOnly = officecfg::Office::Draw::Grid::Resolution::XAxis::Metric::isReadOnly();
321 else
322 bReadOnly = officecfg::Office::Draw::Grid::Resolution::XAxis::NonMetric::isReadOnly();
324 break;
325 case CALC_MODE:
327 if (lcl_IsMetricSystem())
328 bReadOnly = officecfg::Office::Calc::Grid::Resolution::XAxis::Metric::isReadOnly();
329 else
330 bReadOnly = officecfg::Office::Calc::Grid::Resolution::XAxis::NonMetric::isReadOnly();
332 break;
333 default:
334 break;
336 m_xMtrFldDrawX->set_sensitive(!bReadOnly);
337 m_xMtrFldDrawXImg->set_visible(bReadOnly);
339 switch (m_Emode)
341 case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Resolution::YAxis::isReadOnly(); break;
342 case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Resolution::YAxis::isReadOnly(); break;
343 case IMPRESS_MODE:
345 if (lcl_IsMetricSystem())
346 bReadOnly = officecfg::Office::Impress::Grid::Resolution::YAxis::Metric::isReadOnly();
347 else
348 bReadOnly = officecfg::Office::Impress::Grid::Resolution::YAxis::NonMetric::isReadOnly();
350 break;
351 case DRAW_MODE:
353 if (lcl_IsMetricSystem())
354 bReadOnly = officecfg::Office::Draw::Grid::Resolution::YAxis::Metric::isReadOnly();
355 else
356 bReadOnly = officecfg::Office::Draw::Grid::Resolution::YAxis::NonMetric::isReadOnly();
358 break;
359 case CALC_MODE:
361 if (lcl_IsMetricSystem())
362 bReadOnly = officecfg::Office::Calc::Grid::Resolution::YAxis::Metric::isReadOnly();
363 else
364 bReadOnly = officecfg::Office::Calc::Grid::Resolution::YAxis::NonMetric::isReadOnly();
366 break;
367 default:
368 break;
370 m_xMtrFldDrawY->set_sensitive(!bReadOnly);
371 m_xMtrFldDrawYImg->set_visible(bReadOnly);
373 m_xNumFldDivisionX->set_value(pGridAttr->nFldDivisionX + 1);
374 m_xNumFldDivisionY->set_value(pGridAttr->nFldDivisionY + 1);
376 switch (m_Emode)
378 case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Subdivision::XAxis::isReadOnly(); break;
379 case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Subdivision::XAxis::isReadOnly(); break;
380 case IMPRESS_MODE: bReadOnly = officecfg::Office::Impress::Grid::Subdivision::XAxis::isReadOnly(); break;
381 case DRAW_MODE: bReadOnly = officecfg::Office::Draw::Grid::Subdivision::XAxis::isReadOnly(); break;
382 case CALC_MODE: bReadOnly = officecfg::Office::Calc::Grid::Subdivision::XAxis::isReadOnly(); break;
383 default:
384 break;
386 m_xNumFldDivisionX->set_sensitive(!bReadOnly);
387 m_xNumFldDivisionXImg->set_visible(bReadOnly);
389 switch (m_Emode)
391 case WRITER_MODE: bReadOnly = officecfg::Office::Writer::Grid::Subdivision::YAxis::isReadOnly(); break;
392 case HTML_MODE: bReadOnly = officecfg::Office::WriterWeb::Grid::Subdivision::YAxis::isReadOnly(); break;
393 case IMPRESS_MODE: bReadOnly = officecfg::Office::Impress::Grid::Subdivision::YAxis::isReadOnly(); break;
394 case DRAW_MODE: bReadOnly = officecfg::Office::Draw::Grid::Subdivision::YAxis::isReadOnly(); break;
395 case CALC_MODE: bReadOnly = officecfg::Office::Calc::Grid::Subdivision::YAxis::isReadOnly(); break;
396 default:
397 break;
400 m_xNumFldDivisionY->set_sensitive(!bReadOnly);
401 m_xNumFldDivisionYImg->set_visible(bReadOnly);
404 ChangeGridsnapHdl_Impl(*m_xCbxUseGridsnap);
405 bAttrModified = false;
408 void SvxGridTabPage::ActivatePage( const SfxItemSet& rSet )
410 const SvxGridItem* pGridAttr = nullptr;
411 if( (pGridAttr = rSet.GetItemIfSet( SID_ATTR_GRID_OPTIONS , false )) )
413 m_xCbxUseGridsnap->set_active(pGridAttr->bUseGridsnap);
415 ChangeGridsnapHdl_Impl(*m_xCbxUseGridsnap);
418 // Metric Change if necessary (as TabPage is in the dialog, where the
419 // metric can be set
420 const SfxUInt16Item* pItem = rSet.GetItemIfSet( SID_ATTR_METRIC , false );
421 if( !pItem )
422 return;
425 FieldUnit eFUnit = static_cast<FieldUnit>(static_cast<tools::Long>(pItem->GetValue()));
427 if (eFUnit == m_xMtrFldDrawX->get_unit())
428 return;
430 // Set Metrics
431 sal_Int64 nMin, nMax;
432 int nVal = m_xMtrFldDrawX->denormalize(m_xMtrFldDrawX->get_value(FieldUnit::TWIP));
434 lcl_GetMinMax(*m_xMtrFldDrawX, nMin, nMax);
435 SetFieldUnit(*m_xMtrFldDrawX, eFUnit, true);
436 lcl_SetMinMax(*m_xMtrFldDrawX, nMin, nMax);
438 m_xMtrFldDrawX->set_value(m_xMtrFldDrawX->normalize(nVal), FieldUnit::TWIP);
440 nVal = m_xMtrFldDrawY->denormalize(m_xMtrFldDrawY->get_value(FieldUnit::TWIP));
441 lcl_GetMinMax(*m_xMtrFldDrawY, nMin, nMax);
442 SetFieldUnit(*m_xMtrFldDrawY, eFUnit, true);
443 lcl_SetMinMax(*m_xMtrFldDrawY, nMin, nMax);
444 m_xMtrFldDrawY->set_value(m_xMtrFldDrawY->normalize(nVal), FieldUnit::TWIP);
447 DeactivateRC SvxGridTabPage::DeactivatePage( SfxItemSet* _pSet )
449 if ( _pSet )
450 FillItemSet( _pSet );
451 return DeactivateRC::LeavePage;
454 IMPL_LINK(SvxGridTabPage, ChangeDrawHdl_Impl, weld::MetricSpinButton&, rField, void)
456 bAttrModified = true;
457 if (m_xCbxSynchronize->get_active())
459 if (&rField == m_xMtrFldDrawX.get())
460 m_xMtrFldDrawY->set_value(m_xMtrFldDrawX->get_value(FieldUnit::NONE), FieldUnit::NONE);
461 else
462 m_xMtrFldDrawX->set_value(m_xMtrFldDrawY->get_value(FieldUnit::NONE), FieldUnit::NONE);
466 IMPL_LINK_NOARG(SvxGridTabPage, ClickRotateHdl_Impl, weld::Toggleable&, void)
468 if (m_xCbxRotate->get_active())
470 m_xMtrFldAngle->set_sensitive(m_Emode == DRAW_MODE ?
471 !officecfg::Office::Draw::Snap::Position::RotatingValue::isReadOnly() :
472 !officecfg::Office::Impress::Snap::Position::RotatingValue::isReadOnly());
474 else
475 m_xMtrFldAngle->set_sensitive(false);
478 IMPL_LINK(SvxGridTabPage, ChangeDivisionHdl_Impl, weld::SpinButton&, rField, void)
480 bAttrModified = true;
481 if (m_xCbxSynchronize->get_active())
483 if (m_xNumFldDivisionX.get() == &rField)
484 m_xNumFldDivisionY->set_value(m_xNumFldDivisionX->get_value());
485 else
486 m_xNumFldDivisionX->set_value(m_xNumFldDivisionY->get_value());
490 IMPL_LINK_NOARG(SvxGridTabPage, ChangeGridsnapHdl_Impl, weld::Toggleable&, void)
492 bAttrModified = true;
495 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */