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 <cmdid.h> 21 #include <hintids.hxx> 22 #include <swtypes.hxx> 23 #include <svx/colorbox.hxx> 24 #include <editeng/sizeitem.hxx> 25 #include <editeng/lrspitem.hxx> 26 #include <editeng/ulspitem.hxx> 27 #include <editeng/boxitem.hxx> 28 #include <editeng/frmdiritem.hxx> 29 #include <svx/ruler.hxx> 30 #include <pggrid.hxx> 31 #include <tgrditem.hxx> 32 33 #include <wrtsh.hxx> 34 #include <doc.hxx> 35 #include <swmodule.hxx> 36 #include <view.hxx> 37 38 SwTextGridPage::SwTextGridPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet &rSet) 39 : SfxTabPage(pPage, pController, "modules/swriter/ui/textgridpage.ui", "TextGridPage", &rSet) 40 , m_nRubyUserValue(0) 41 , m_bRubyUserValue(false) 42 , m_aPageSize(MM50, MM50) 43 , m_bVertical(false) 44 , m_bSquaredMode(false) 45 , m_bHRulerChanged(false) 46 , m_bVRulerChanged(false) 47 , m_xNoGridRB(m_xBuilder->weld_radio_button("radioRB_NOGRID")) 48 , m_xLinesGridRB(m_xBuilder->weld_radio_button("radioRB_LINESGRID")) 49 , m_xCharsGridRB(m_xBuilder->weld_radio_button("radioRB_CHARSGRID")) 50 , m_xSnapToCharsCB(m_xBuilder->weld_check_button("checkCB_SNAPTOCHARS")) 51 , m_xExampleWN(new weld::CustomWeld(*m_xBuilder, "drawingareaWN_EXAMPLE", m_aExampleWN)) 52 , m_xLayoutFL(m_xBuilder->weld_widget("frameFL_LAYOUT")) 53 , m_xLinesPerPageNF(m_xBuilder->weld_spin_button("spinNF_LINESPERPAGE")) 54 , m_xLinesRangeFT(m_xBuilder->weld_label("labelFT_LINERANGE")) 55 , m_xTextSizeMF(m_xBuilder->weld_metric_spin_button("spinMF_TEXTSIZE", FieldUnit::POINT)) 56 , m_xCharsPerLineFT(m_xBuilder->weld_label("labelFT_CHARSPERLINE")) 57 , m_xCharsPerLineNF(m_xBuilder->weld_spin_button("spinNF_CHARSPERLINE")) 58 , m_xCharsRangeFT(m_xBuilder->weld_label("labelFT_CHARRANGE")) 59 , m_xCharWidthFT(m_xBuilder->weld_label("labelFT_CHARWIDTH")) 60 , m_xCharWidthMF(m_xBuilder->weld_metric_spin_button("spinMF_CHARWIDTH", FieldUnit::POINT)) 61 , m_xRubySizeFT(m_xBuilder->weld_label("labelFT_RUBYSIZE")) 62 , m_xRubySizeMF(m_xBuilder->weld_metric_spin_button("spinMF_RUBYSIZE", FieldUnit::POINT)) 63 , m_xRubyBelowCB(m_xBuilder->weld_check_button("checkCB_RUBYBELOW")) 64 , m_xDisplayFL(m_xBuilder->weld_widget("frameFL_DISPLAY")) 65 , m_xDisplayCB(m_xBuilder->weld_check_button("checkCB_DISPLAY")) 66 , m_xPrintCB(m_xBuilder->weld_check_button("checkCB_PRINT")) 67 , m_xColorLB(new ColorListBox(m_xBuilder->weld_menu_button("listLB_COLOR"), pController->getDialog())) 68 { 69 Link<weld::SpinButton&,void> aLink = LINK(this, SwTextGridPage, CharorLineChangedHdl); 70 m_xCharsPerLineNF->connect_value_changed(aLink); 71 m_xLinesPerPageNF->connect_value_changed(aLink); 72 73 Link<weld::MetricSpinButton&,void> aSizeLink = LINK(this, SwTextGridPage, TextSizeChangedHdl); 74 m_xTextSizeMF->connect_value_changed(aSizeLink); 75 m_xRubySizeMF->connect_value_changed(aSizeLink); 76 m_xCharWidthMF->connect_value_changed(aSizeLink); 77 78 Link<weld::ToggleButton&,void> aGridTypeHdl = LINK(this, SwTextGridPage, GridTypeHdl); 79 m_xNoGridRB->connect_toggled(aGridTypeHdl); 80 m_xLinesGridRB->connect_toggled(aGridTypeHdl); 81 m_xCharsGridRB->connect_toggled(aGridTypeHdl); 82 83 m_xColorLB->SetSelectHdl(LINK(this, SwTextGridPage, ColorModifyHdl)); 84 m_xPrintCB->connect_toggled(LINK(this, SwTextGridPage, GridModifyClickHdl)); 85 m_xRubyBelowCB->connect_toggled(LINK(this, SwTextGridPage, GridModifyClickHdl)); 86 87 m_xDisplayCB->connect_toggled(LINK(this, SwTextGridPage, DisplayGridHdl)); 88 89 //Get the default paper mode 90 SwView *pView = ::GetActiveView(); 91 if( pView ) 92 { 93 SwWrtShell* pSh = pView->GetWrtShellPtr(); 94 if( pSh ) 95 { 96 m_bSquaredMode = pSh->GetDoc()->IsSquaredPageMode(); 97 } 98 } 99 if( m_bSquaredMode ) 100 { 101 102 m_xRubySizeFT->show(); 103 m_xRubySizeMF->show(); 104 m_xRubyBelowCB->show(); 105 m_xSnapToCharsCB->hide(); 106 m_xCharWidthFT->hide(); 107 m_xCharWidthMF->hide(); 108 } 109 else 110 { 111 m_xRubySizeFT->hide(); 112 m_xRubySizeMF->hide(); 113 m_xRubyBelowCB->hide(); 114 m_xSnapToCharsCB->show(); 115 m_xCharWidthFT->show(); 116 m_xCharWidthMF->show(); 117 } 118 } 119 120 SwTextGridPage::~SwTextGridPage() 121 { 122 m_xColorLB.reset(); 123 } 124 125 std::unique_ptr<SfxTabPage> SwTextGridPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet *rSet) 126 { 127 return std::make_unique<SwTextGridPage>(pPage, pController, *rSet); 128 } 129 130 bool SwTextGridPage::FillItemSet(SfxItemSet *rSet) 131 { 132 bool bRet = false; 133 if (m_xNoGridRB->get_state_changed_from_saved() || 134 m_xLinesGridRB->get_state_changed_from_saved() || 135 m_xLinesPerPageNF->get_value_changed_from_saved() || 136 m_xTextSizeMF->get_value_changed_from_saved() || 137 m_xCharsPerLineNF->get_value_changed_from_saved() || 138 m_xSnapToCharsCB->get_state_changed_from_saved() || 139 m_xRubySizeMF->get_value_changed_from_saved() || 140 m_xCharWidthMF->get_value_changed_from_saved() || 141 m_xRubyBelowCB->get_state_changed_from_saved() || 142 m_xDisplayCB->get_state_changed_from_saved() || 143 m_xPrintCB->get_state_changed_from_saved() || 144 m_xColorLB->IsValueChangedFromSaved()) 145 { 146 PutGridItem(*rSet); 147 bRet = true; 148 } 149 150 // draw ticks of ruler 151 SwView * pView = ::GetActiveView(); 152 if ( m_bHRulerChanged ) 153 pView->GetHRuler().DrawTicks(); 154 if ( m_bVRulerChanged ) 155 pView->GetVRuler().DrawTicks(); 156 return bRet; 157 } 158 159 void SwTextGridPage::Reset(const SfxItemSet *rSet) 160 { 161 sal_Int32 nLinesPerPage = 0; 162 163 if(SfxItemState::DEFAULT <= rSet->GetItemState(RES_TEXTGRID)) 164 { 165 const SwTextGridItem& rGridItem = rSet->Get(RES_TEXTGRID); 166 weld::RadioButton* pButton = nullptr; 167 switch(rGridItem.GetGridType()) 168 { 169 case GRID_NONE : pButton = m_xNoGridRB.get(); break; 170 case GRID_LINES_ONLY : pButton = m_xLinesGridRB.get(); break; 171 default: pButton = m_xCharsGridRB.get(); 172 } 173 pButton->set_active(true); 174 m_xDisplayCB->set_active(rGridItem.IsDisplayGrid()); 175 GridTypeHdl(*pButton); 176 m_xSnapToCharsCB->set_active(rGridItem.IsSnapToChars()); 177 nLinesPerPage = rGridItem.GetLines(); 178 179 SetLinesOrCharsRanges(*m_xLinesRangeFT , m_xLinesPerPageNF->get_max()); 180 m_nRubyUserValue = rGridItem.GetBaseHeight(); 181 m_bRubyUserValue = true; 182 m_xTextSizeMF->set_value(m_xTextSizeMF->normalize(m_nRubyUserValue), FieldUnit::TWIP); 183 m_xRubySizeMF->set_value(m_xRubySizeMF->normalize(rGridItem.GetRubyHeight()), FieldUnit::TWIP); 184 m_xCharWidthMF->set_value(m_xCharWidthMF->normalize(rGridItem.GetBaseWidth()), FieldUnit::TWIP); 185 m_xRubyBelowCB->set_active(rGridItem.IsRubyTextBelow()); 186 m_xPrintCB->set_active(rGridItem.IsPrintGrid()); 187 m_xColorLB->SelectEntry(rGridItem.GetColor()); 188 } 189 UpdatePageSize(*rSet); 190 191 if (nLinesPerPage > 0) 192 m_xLinesPerPageNF->set_value(nLinesPerPage); 193 194 m_xNoGridRB->save_state(); 195 m_xLinesGridRB->save_state(); 196 m_xSnapToCharsCB->save_state(); 197 m_xLinesPerPageNF->save_value(); 198 m_xTextSizeMF->save_value(); 199 m_xCharsPerLineNF->save_value(); 200 m_xRubySizeMF->save_value(); 201 m_xCharWidthMF->save_value(); 202 m_xRubyBelowCB->save_state(); 203 m_xDisplayCB->save_state(); 204 m_xPrintCB->save_state(); 205 m_xColorLB->SaveValue(); 206 } 207 208 void SwTextGridPage::ActivatePage( const SfxItemSet& rSet ) 209 { 210 m_aExampleWN.Hide(); 211 m_aExampleWN.UpdateExample(rSet); 212 UpdatePageSize(rSet); 213 m_aExampleWN.Show(); 214 m_aExampleWN.Invalidate(); 215 } 216 217 DeactivateRC SwTextGridPage::DeactivatePage( SfxItemSet* ) 218 { 219 return DeactivateRC::LeavePage; 220 } 221 222 void SwTextGridPage::PutGridItem(SfxItemSet& rSet) 223 { 224 SwTextGridItem aGridItem; 225 aGridItem.SetGridType(m_xNoGridRB->get_active() ? GRID_NONE : 226 m_xLinesGridRB->get_active() ? GRID_LINES_ONLY : GRID_LINES_CHARS ); 227 aGridItem.SetSnapToChars(m_xSnapToCharsCB->get_active()); 228 aGridItem.SetLines( static_cast< sal_uInt16 >(m_xLinesPerPageNF->get_value()) ); 229 aGridItem.SetBaseHeight( static_cast< sal_uInt16 >( 230 m_bRubyUserValue ? m_nRubyUserValue : 231 m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FieldUnit::TWIP))) ); 232 aGridItem.SetRubyHeight( static_cast< sal_uInt16 >(m_xRubySizeMF->denormalize(m_xRubySizeMF->get_value(FieldUnit::TWIP))) ); 233 aGridItem.SetBaseWidth( static_cast< sal_uInt16 >(m_xCharWidthMF->denormalize(m_xCharWidthMF->get_value(FieldUnit::TWIP))) ); 234 aGridItem.SetRubyTextBelow(m_xRubyBelowCB->get_active()); 235 aGridItem.SetSquaredMode(m_bSquaredMode); 236 aGridItem.SetDisplayGrid(m_xDisplayCB->get_active()); 237 aGridItem.SetPrintGrid(m_xPrintCB->get_active()); 238 aGridItem.SetColor(m_xColorLB->GetSelectEntryColor()); 239 rSet.Put(aGridItem); 240 241 SwView * pView = ::GetActiveView(); 242 if ( aGridItem.GetGridType() != GRID_NONE ) 243 { 244 if ( aGridItem.GetGridType() == GRID_LINES_CHARS ) 245 { 246 m_bHRulerChanged = true; 247 } 248 m_bVRulerChanged = true; 249 pView->GetHRuler().SetCharWidth(static_cast<long>(m_xCharWidthMF->get_value(FieldUnit::TWIP)/56.7)); 250 pView->GetVRuler().SetLineHeight(static_cast<long>(m_xTextSizeMF->get_value(FieldUnit::TWIP)/56.7)); 251 } 252 } 253 254 void SwTextGridPage::UpdatePageSize(const SfxItemSet& rSet) 255 { 256 if( SfxItemState::UNKNOWN != rSet.GetItemState( RES_FRAMEDIR )) 257 { 258 const SvxFrameDirectionItem& rDirItem = 259 rSet.Get(RES_FRAMEDIR); 260 m_bVertical = rDirItem.GetValue() == SvxFrameDirection::Vertical_RL_TB|| 261 rDirItem.GetValue() == SvxFrameDirection::Vertical_LR_TB; 262 } 263 264 if( SfxItemState::SET != rSet.GetItemState( SID_ATTR_PAGE_SIZE )) 265 return; 266 267 const SvxSizeItem& rSize = rSet.Get(SID_ATTR_PAGE_SIZE); 268 const SvxLRSpaceItem& rLRSpace = rSet.Get( RES_LR_SPACE ); 269 const SvxULSpaceItem& rULSpace = rSet.Get( RES_UL_SPACE ); 270 const SvxBoxItem& rBox = rSet.Get(RES_BOX); 271 sal_Int32 nDistanceLR = rLRSpace.GetLeft() + rLRSpace.GetRight(); 272 sal_Int32 nDistanceUL = rULSpace.GetUpper() + rULSpace.GetLower(); 273 274 sal_Int32 nValue1 = rSize.GetSize().Height() - nDistanceUL - 275 rBox.GetDistance(SvxBoxItemLine::TOP) - 276 rBox.GetDistance(SvxBoxItemLine::BOTTOM); 277 sal_Int32 nValue2 = rSize.GetSize().Width() - nDistanceLR - 278 rBox.GetDistance(SvxBoxItemLine::LEFT) - 279 rBox.GetDistance(SvxBoxItemLine::RIGHT); 280 if(m_bVertical) 281 { 282 m_aPageSize.setWidth( nValue1 ); 283 m_aPageSize.setHeight( nValue2 ); 284 } 285 else 286 { 287 m_aPageSize.setWidth( nValue2 ); 288 m_aPageSize.setHeight( nValue1 ); 289 } 290 291 sal_Int32 nTextSize = static_cast< sal_Int32 >(m_bRubyUserValue ? 292 m_nRubyUserValue : 293 m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FieldUnit::TWIP))); 294 295 if ( m_bSquaredMode ) 296 { 297 sal_Int32 nCharsPerLine = m_aPageSize.Width() / nTextSize; 298 m_xCharsPerLineNF->set_max(nCharsPerLine); 299 m_xCharsPerLineNF->set_value(nCharsPerLine); 300 m_xLinesPerPageNF->set_max(m_aPageSize.Height() / 301 ( m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FieldUnit::TWIP)) + 302 m_xRubySizeMF->denormalize(m_xRubySizeMF->get_value(FieldUnit::TWIP)))); 303 SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() ); 304 SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() ); 305 } 306 else 307 { 308 sal_Int32 nTextWidth = static_cast< sal_Int32 >(m_xCharWidthMF->denormalize(m_xCharWidthMF->get_value(FieldUnit::TWIP))); 309 m_xLinesPerPageNF->set_value(m_aPageSize.Height() / nTextSize); 310 if (nTextWidth) 311 m_xCharsPerLineNF->set_value(m_aPageSize.Width() / nTextWidth); 312 else 313 m_xCharsPerLineNF->set_value(45); 314 SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() ); 315 SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() ); 316 } 317 } 318 319 void SwTextGridPage::SetLinesOrCharsRanges(weld::Label& rField, const sal_Int32 nValue ) 320 { 321 OUString aFieldStr = "( 1 -" + OUString::number(nValue) + " )"; 322 rField.set_label(aFieldStr); 323 } 324 325 const sal_uInt16* SwTextGridPage::GetRanges() 326 { 327 static const sal_uInt16 aPageRg[] = { 328 RES_TEXTGRID, RES_TEXTGRID, 329 0}; 330 return aPageRg; 331 } 332 333 IMPL_LINK(SwTextGridPage, CharorLineChangedHdl, weld::SpinButton&, rField, void) 334 { 335 //if in squared mode 336 if ( m_bSquaredMode ) 337 { 338 if (m_xCharsPerLineNF.get() == &rField) 339 { 340 auto nValue = m_xCharsPerLineNF->get_value(); 341 assert(nValue && "div-by-zero"); 342 auto nWidth = m_aPageSize.Width() / nValue; 343 m_xTextSizeMF->set_value(m_xTextSizeMF->normalize(nWidth), FieldUnit::TWIP); 344 //prevent rounding errors in the MetricField by saving the used value 345 m_nRubyUserValue = nWidth; 346 m_bRubyUserValue = true; 347 348 } 349 //set maximum line per page 350 { 351 sal_Int32 nMaxLines = static_cast< sal_Int32 >(m_aPageSize.Height() / 352 ( m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FieldUnit::TWIP)) + 353 m_xRubySizeMF->denormalize(m_xRubySizeMF->get_value(FieldUnit::TWIP)))); 354 m_xLinesPerPageNF->set_max(nMaxLines); 355 } 356 SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() ); 357 SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() ); 358 } 359 else//in normal mode 360 { 361 if (m_xLinesPerPageNF.get() == &rField) 362 { 363 auto nValue = m_xLinesPerPageNF->get_value(); 364 assert(nValue && "div-by-zero"); 365 auto nHeight = m_aPageSize.Height() / nValue; 366 m_xTextSizeMF->set_value(m_xTextSizeMF->normalize(nHeight), FieldUnit::TWIP); 367 m_xRubySizeMF->set_value(0, FieldUnit::TWIP); 368 SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() ); 369 370 m_nRubyUserValue = nHeight; 371 m_bRubyUserValue = true; 372 } 373 else if (m_xCharsPerLineNF.get() == &rField) 374 { 375 auto nValue = m_xCharsPerLineNF->get_value(); 376 assert(nValue && "div-by-zero"); 377 auto nWidth = m_aPageSize.Width() / nValue; 378 m_xCharWidthMF->set_value(m_xCharWidthMF->normalize(nWidth), FieldUnit::TWIP); 379 SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() ); 380 } 381 } 382 GridModifyHdl(); 383 } 384 385 IMPL_LINK(SwTextGridPage, TextSizeChangedHdl, weld::MetricSpinButton&, rField, void) 386 { 387 //if in squared mode 388 if( m_bSquaredMode ) 389 { 390 if (m_xTextSizeMF.get() == &rField) 391 { 392 m_bRubyUserValue = false; 393 394 // fdo#50941: set maximum characters per line 395 sal_Int32 nTextSize = static_cast< sal_Int32 >(m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FieldUnit::TWIP))); 396 if (nTextSize > 0) 397 { 398 sal_Int32 nMaxChars = m_aPageSize.Width() / nTextSize; 399 m_xCharsPerLineNF->set_value(nMaxChars); 400 m_xCharsPerLineNF->set_max(nMaxChars); 401 SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() ); 402 } 403 } 404 //set maximum line per page 405 { 406 sal_Int32 nMaxLines = static_cast< sal_Int32 >(m_aPageSize.Height() / 407 ( m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FieldUnit::TWIP)) + 408 m_xRubySizeMF->denormalize(m_xRubySizeMF->get_value(FieldUnit::TWIP)))); 409 m_xLinesPerPageNF->set_max(nMaxLines); 410 SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() ); 411 } 412 } 413 else 414 { 415 if (m_xTextSizeMF.get() == &rField) 416 { 417 sal_Int32 nTextSize = static_cast< sal_Int32 >(m_xTextSizeMF->denormalize(m_xTextSizeMF->get_value(FieldUnit::TWIP))); 418 m_xLinesPerPageNF->set_value(m_aPageSize.Height() / nTextSize); 419 m_bRubyUserValue = false; 420 SetLinesOrCharsRanges( *m_xLinesRangeFT , m_xLinesPerPageNF->get_max() ); 421 } 422 else if (m_xCharWidthMF.get() == &rField) 423 { 424 sal_Int32 nTextWidth = static_cast< sal_Int32 >(m_xCharWidthMF->denormalize(m_xCharWidthMF->get_value(FieldUnit::TWIP))); 425 sal_Int32 nMaxChar = 45 ; 426 if (nTextWidth) 427 nMaxChar = m_aPageSize.Width() / nTextWidth; 428 m_xCharsPerLineNF->set_value( nMaxChar ); 429 SetLinesOrCharsRanges( *m_xCharsRangeFT , m_xCharsPerLineNF->get_max() ); 430 } 431 //rubySize is disabled 432 } 433 GridModifyHdl(); 434 } 435 436 IMPL_LINK(SwTextGridPage, GridTypeHdl, weld::ToggleButton&, rButton, void) 437 { 438 bool bEnable = m_xNoGridRB.get() != &rButton; 439 m_xLayoutFL->set_sensitive(bEnable); 440 m_xDisplayFL->set_sensitive(bEnable); 441 442 //one special case 443 if (bEnable) 444 DisplayGridHdl(*m_xDisplayCB); 445 446 bEnable = m_xCharsGridRB.get() == &rButton; 447 m_xSnapToCharsCB->set_sensitive(bEnable); 448 449 bEnable = m_xLinesGridRB.get() == &rButton; 450 if (bEnable && !m_bSquaredMode) 451 { 452 m_xCharsPerLineFT->set_sensitive(false); 453 m_xCharsPerLineNF->set_sensitive(false); 454 m_xCharsRangeFT->set_sensitive(false); 455 m_xCharWidthFT->set_sensitive(false); 456 m_xCharWidthMF->set_sensitive(false); 457 } 458 459 GridModifyHdl(); 460 } 461 462 IMPL_LINK_NOARG(SwTextGridPage, DisplayGridHdl, weld::ToggleButton&, void) 463 { 464 bool bChecked = m_xDisplayCB->get_active(); 465 m_xPrintCB->set_sensitive(bChecked); 466 m_xPrintCB->set_active(bChecked); 467 } 468 469 IMPL_LINK_NOARG(SwTextGridPage, GridModifyClickHdl, weld::ToggleButton&, void) 470 { 471 GridModifyHdl(); 472 } 473 474 IMPL_LINK_NOARG(SwTextGridPage, ColorModifyHdl, ColorListBox&, void) 475 { 476 GridModifyHdl(); 477 } 478 479 void SwTextGridPage::GridModifyHdl() 480 { 481 const SfxItemSet& rOldSet = GetItemSet(); 482 SfxItemSet aSet(rOldSet); 483 const SfxItemSet* pExSet = GetDialogExampleSet(); 484 if(pExSet) 485 aSet.Put(*pExSet); 486 PutGridItem(aSet); 487 m_aExampleWN.UpdateExample(aSet); 488 } 489 490 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 491
