LibreOffice Module cui (master)  1
textanim.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 <textanim.hxx>
21 #include <textattr.hxx>
22 #include <TextColumnsPage.hxx>
23 #include <svx/dlgutil.hxx>
24 #include <svx/svdmark.hxx>
25 #include <svx/svdview.hxx>
26 #include <svx/sdtaaitm.hxx>
27 #include <svx/sdtacitm.hxx>
28 #include <svx/sdtaiitm.hxx>
29 #include <svx/sdtayitm.hxx>
30 #include <svtools/unitconv.hxx>
31 
33  svl::Items<SDRATTR_TEXT_ANIKIND, SDRATTR_TEXT_ANIAMOUNT>);
34 
35 /*************************************************************************
36 |*
37 |* constructor of the tab dialog: adds pages to the dialog
38 |*
39 \************************************************************************/
40 
41 SvxTextTabDialog::SvxTextTabDialog(weld::Window* pParent, const SfxItemSet* pAttr, const SdrView* pSdrView)
42  : SfxTabDialogController(pParent, "cui/ui/textdialog.ui", "TextDialog", pAttr)
43  , pView(pSdrView)
44 {
45  AddTabPage("RID_SVXPAGE_TEXTATTR", SvxTextAttrPage::Create, nullptr);
46  AddTabPage("RID_SVXPAGE_TEXTANIMATION", SvxTextAnimationPage::Create, nullptr);
47  AddTabPage("RID_SVXPAGE_TEXTCOLUMNS", SvxTextColumnsPage::Create, nullptr);
48 }
49 
50 /*************************************************************************
51 |*
52 |* PageCreated()
53 |*
54 \************************************************************************/
55 
56 void SvxTextTabDialog::PageCreated(const OString& rId, SfxTabPage &rPage)
57 {
58  if (rId != "RID_SVXPAGE_TEXTATTR")
59  return;
60 
61  SdrObjKind eKind = OBJ_NONE;
62  if (pView)
63  {
64  const SdrMarkList& rMarkList = pView->GetMarkedObjectList();
65  bool bHasMarked = rMarkList.GetMarkCount() > 0;
66  if (bHasMarked)
67  {
68  if (rMarkList.GetMarkCount() == 1)
69  {
70  const SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
71  eKind = pObj->GetObjIdentifier();
72  }
73  }
74  }
75  static_cast<SvxTextAttrPage&>(rPage).SetObjKind(eKind);
76  static_cast<SvxTextAttrPage&>(rPage).Construct();
77 }
78 
79 /*************************************************************************
80 |*
81 |* Page
82 |*
83 \************************************************************************/
85  : SfxTabPage(pPage, pController, "cui/ui/textanimtabpage.ui", "TextAnimation", &rInAttrs)
86  , eAniKind(SdrTextAniKind::NONE)
87  , m_aUpState(TRISTATE_INDET)
88  , m_aLeftState(TRISTATE_INDET)
89  , m_aRightState(TRISTATE_INDET)
90  , m_aDownState(TRISTATE_INDET)
91  , m_xLbEffect(m_xBuilder->weld_combo_box("LB_EFFECT"))
92  , m_xBoxDirection(m_xBuilder->weld_widget("boxDIRECTION"))
93  , m_xBtnUp(m_xBuilder->weld_toggle_button("BTN_UP"))
94  , m_xBtnLeft(m_xBuilder->weld_toggle_button("BTN_LEFT"))
95  , m_xBtnRight(m_xBuilder->weld_toggle_button("BTN_RIGHT"))
96  , m_xBtnDown(m_xBuilder->weld_toggle_button("BTN_DOWN"))
97  , m_xFlProperties(m_xBuilder->weld_frame("FL_PROPERTIES"))
98  , m_xTsbStartInside(m_xBuilder->weld_check_button("TSB_START_INSIDE"))
99  , m_xTsbStopInside(m_xBuilder->weld_check_button("TSB_STOP_INSIDE"))
100  , m_xBoxCount(m_xBuilder->weld_widget("boxCOUNT"))
101  , m_xTsbEndless(m_xBuilder->weld_check_button("TSB_ENDLESS"))
102  , m_xNumFldCount(m_xBuilder->weld_spin_button("NUM_FLD_COUNT"))
103  , m_xTsbPixel(m_xBuilder->weld_check_button("TSB_PIXEL"))
104  , m_xMtrFldAmount(m_xBuilder->weld_metric_spin_button("MTR_FLD_AMOUNT", FieldUnit::PIXEL))
105  , m_xTsbAuto(m_xBuilder->weld_check_button("TSB_AUTO"))
106  , m_xMtrFldDelay(m_xBuilder->weld_metric_spin_button("MTR_FLD_DELAY", FieldUnit::MILLISECOND))
107 {
108  eFUnit = GetModuleFieldUnit( rInAttrs );
109  SfxItemPool* pPool = rInAttrs.GetPool();
110  DBG_ASSERT( pPool, "Where is the pool?" );
112 
113  m_xLbEffect->connect_changed( LINK( this, SvxTextAnimationPage, SelectEffectHdl_Impl ) );
114  m_xTsbEndless->connect_toggled( LINK( this, SvxTextAnimationPage, ClickEndlessHdl_Impl ) );
115  m_xTsbAuto->connect_toggled( LINK( this, SvxTextAnimationPage, ClickAutoHdl_Impl ) );
116  m_xTsbPixel->connect_toggled( LINK( this, SvxTextAnimationPage, ClickPixelHdl_Impl ) );
117 
118  Link<weld::Button&,void> aLink( LINK( this, SvxTextAnimationPage, ClickDirectionHdl_Impl ) );
119  m_xBtnUp->connect_clicked( aLink );
120  m_xBtnLeft->connect_clicked( aLink );
121  m_xBtnRight->connect_clicked( aLink );
122  m_xBtnDown->connect_clicked( aLink );
123 }
124 
126 {
127 }
128 
129 /*************************************************************************
130 |*
131 |* reads the passed item set
132 |*
133 \************************************************************************/
134 
136 {
137  const SfxItemPool* pPool = rAttrs->GetPool();
138 
139  // animation type
140  const SfxPoolItem* pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANIKIND );
141 
142  if( !pItem )
143  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANIKIND );
144 
145  eAniKind = static_cast<const SdrTextAniKindItem*>(pItem)->GetValue();
146  m_xLbEffect->set_active(sal::static_int_cast<sal_Int32>(eAniKind));
147  m_xLbEffect->save_value();
148 
149  // animation direction
150  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANIDIRECTION );
151  if( !pItem )
152  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANIDIRECTION );
153 
154  SelectDirection(static_cast<const SdrTextAniDirectionItem*>(pItem)->GetValue());
155  m_aUpState = m_xBtnUp->get_state();
156  m_aLeftState = m_xBtnLeft->get_state();
157  m_aRightState = m_xBtnRight->get_state();
158  m_aDownState = m_xBtnDown->get_state();
159 
160  // Start inside
161  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANISTARTINSIDE );
162  if( !pItem )
163  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANISTARTINSIDE );
164 
165  if (static_cast<const SdrTextAniStartInsideItem*>(pItem)->GetValue())
166  m_xTsbStartInside->set_state(TRISTATE_TRUE);
167  else
168  m_xTsbStartInside->set_state(TRISTATE_FALSE);
169  m_xTsbStartInside->save_state();
170 
171  // Stop inside
172  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANISTOPINSIDE );
173  if( !pItem )
174  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANISTOPINSIDE );
175 
176  if (static_cast<const SdrTextAniStopInsideItem*>(pItem)->GetValue())
177  m_xTsbStopInside->set_state(TRISTATE_TRUE);
178  else
179  m_xTsbStopInside->set_state(TRISTATE_FALSE);
180  m_xTsbStopInside->save_state();
181 
182  // quantity
183  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANICOUNT );
184  if( !pItem )
185  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANICOUNT );
186 
187  tools::Long nValue = static_cast<tools::Long>(static_cast<const SdrTextAniCountItem*>(pItem)->GetValue());
188  m_xNumFldCount->set_value(nValue);
189  if (nValue == 0)
190  {
191  if (eAniKind == SdrTextAniKind::Slide)
192  {
193  m_xTsbEndless->set_state(TRISTATE_FALSE);
194  m_xTsbEndless->set_sensitive(false);
195  }
196  else
197  {
198  m_xTsbEndless->set_state(TRISTATE_TRUE);
199  m_xNumFldCount->set_text("");
200  }
201  }
202  else
203  m_xTsbEndless->set_state(TRISTATE_FALSE);
204  m_xTsbEndless->save_state();
205  m_xNumFldCount->save_value();
206 
207  // delay
208  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANIDELAY );
209  if( !pItem )
210  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANIDELAY );
211 
212  nValue = static_cast<tools::Long>(static_cast<const SdrTextAniDelayItem*>(pItem)->GetValue());
213  m_xMtrFldDelay->set_value(nValue, FieldUnit::NONE);
214  if (nValue == 0)
215  {
216  m_xTsbAuto->set_state(TRISTATE_TRUE);
217  m_xMtrFldDelay->set_text("");
218  }
219  else
220  m_xTsbAuto->set_state(TRISTATE_FALSE);
221  m_xTsbAuto->save_state();
222  m_xMtrFldDelay->save_value();
223 
224  // step size
225  pItem = GetItem( *rAttrs, SDRATTR_TEXT_ANIAMOUNT );
226  if( !pItem )
227  pItem = &pPool->GetDefaultItem( SDRATTR_TEXT_ANIAMOUNT );
228 
229  nValue = static_cast<tools::Long>(static_cast<const SdrTextAniAmountItem*>(pItem)->GetValue());
230  if (nValue <= 0)
231  {
232  m_xTsbPixel->set_state(TRISTATE_TRUE);
233  nValue = -nValue;
234  if (nValue == 0)
235  nValue++;
236  m_xMtrFldAmount->set_unit(FieldUnit::CUSTOM);
237  m_xMtrFldAmount->set_digits(0);
238 
239  m_xMtrFldAmount->set_increments(1, 10, FieldUnit::NONE);
240  m_xMtrFldAmount->set_range(1, 100, FieldUnit::NONE);
241  m_xMtrFldAmount->set_value(nValue, FieldUnit::NONE);
242  }
243  else
244  {
245  m_xTsbPixel->set_state(TRISTATE_FALSE);
246  m_xMtrFldAmount->set_unit(eFUnit);
247  m_xMtrFldAmount->set_digits(2);
248 
249  m_xMtrFldAmount->set_increments(10, 100, FieldUnit::NONE);
250  m_xMtrFldAmount->set_range(1, 10000, FieldUnit::NONE);
251 
253  }
254  m_xTsbPixel->save_state();
255  m_xMtrFldAmount->save_value();
256 
257  SelectEffectHdl_Impl(*m_xLbEffect);
258  ClickEndlessHdl_Impl(*m_xTsbEndless);
259  ClickAutoHdl_Impl(*m_xTsbAuto);
260 }
261 
262 /*************************************************************************
263 |*
264 |* fills the passed item set with dialog box attributes
265 |*
266 \************************************************************************/
267 
269 {
270  bool bModified = false;
271  TriState eState;
272 
273  // animation type
274  int nPos = m_xLbEffect->get_active();
275  if( nPos != -1 &&
276  m_xLbEffect->get_value_changed_from_saved() )
277  {
278  rAttrs->Put( SdrTextAniKindItem( static_cast<SdrTextAniKind>(nPos) ) );
279  bModified = true;
280  }
281 
282  // animation direction
283  if (m_aUpState != m_xBtnUp->get_state() ||
284  m_aLeftState != m_xBtnLeft->get_state() ||
285  m_aRightState != m_xBtnRight->get_state() ||
286  m_aDownState != m_xBtnDown->get_state())
287  {
289  rAttrs->Put( SdrTextAniDirectionItem( eValue ) );
290  bModified = true;
291  }
292 
293  // Start inside
294  eState = m_xTsbStartInside->get_state();
295  if (m_xTsbStartInside->get_state_changed_from_saved())
296  {
297  rAttrs->Put( SdrTextAniStartInsideItem( TRISTATE_TRUE == eState ) );
298  bModified = true;
299  }
300 
301  // Stop inside
302  eState = m_xTsbStopInside->get_state();
303  if (m_xTsbStopInside->get_state_changed_from_saved())
304  {
305  rAttrs->Put( SdrTextAniStopInsideItem( TRISTATE_TRUE == eState ) );
306  bModified = true;
307  }
308 
309  // quantity
310  eState = m_xTsbEndless->get_state();
311  if (m_xTsbEndless->get_state_changed_from_saved() ||
312  m_xNumFldCount->get_value_changed_from_saved())
313  {
314  sal_Int64 nValue = 0;
315  if( eState == TRISTATE_TRUE /*#89844#*/ && m_xTsbEndless->get_sensitive())
316  bModified = true;
317  else
318  {
319  if( m_xNumFldCount->get_value_changed_from_saved() )
320  {
321  nValue = m_xNumFldCount->get_value();
322  bModified = true;
323  }
324  }
325  if( bModified )
326  rAttrs->Put( SdrTextAniCountItem( static_cast<sal_uInt16>(nValue) ) );
327  }
328 
329  // delay
330  eState = m_xTsbAuto->get_state();
331  if (m_xTsbAuto->get_state_changed_from_saved() ||
332  m_xMtrFldDelay->get_value_changed_from_saved())
333  {
334  sal_Int64 nValue = 0;
335  if( eState == TRISTATE_TRUE )
336  bModified = true;
337  else
338  {
339  if( m_xMtrFldDelay->get_value_changed_from_saved() )
340  {
341  nValue = m_xMtrFldDelay->get_value(FieldUnit::NONE);
342  bModified = true;
343  }
344  }
345  if( bModified )
346  rAttrs->Put( SdrTextAniDelayItem( static_cast<sal_uInt16>(nValue) ) );
347  }
348 
349  // step size
350  eState = m_xTsbPixel->get_state();
351  if (m_xTsbPixel->get_state_changed_from_saved() ||
352  m_xMtrFldAmount->get_value_changed_from_saved())
353  {
354  sal_Int64 nValue = 0;
355  if( eState == TRISTATE_TRUE )
356  {
357  nValue = m_xMtrFldAmount->get_value(FieldUnit::NONE);
358  nValue = -nValue;
359  }
360  else
361  {
362  nValue = GetCoreValue( *m_xMtrFldAmount, eUnit );
363  }
364  rAttrs->Put( SdrTextAniAmountItem( static_cast<sal_Int16>(nValue) ) );
365 
366  bModified = true;
367  }
368 
369  return bModified;
370 }
371 
372 /*************************************************************************
373 |*
374 |* creates the page
375 |*
376 \************************************************************************/
377 
378 std::unique_ptr<SfxTabPage> SvxTextAnimationPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrs)
379 {
380  return std::make_unique<SvxTextAnimationPage>(pPage, pController, *rAttrs);
381 }
382 
384 {
385  int nPos = m_xLbEffect->get_active();
386  if (nPos == -1)
387  return;
388 
389  eAniKind = static_cast<SdrTextAniKind>(nPos);
390  switch( eAniKind )
391  {
392  case SdrTextAniKind::NONE:
393  {
394  m_xBoxDirection->set_sensitive(false);
395  m_xFlProperties->set_sensitive(false);
396  }
397  break;
398 
399  case SdrTextAniKind::Blink:
400  case SdrTextAniKind::Scroll:
401  case SdrTextAniKind::Alternate:
402  case SdrTextAniKind::Slide:
403  {
404  m_xFlProperties->set_sensitive(true);
405  if( eAniKind == SdrTextAniKind::Slide )
406  {
407  m_xTsbStartInside->set_sensitive(false);
408  m_xTsbStopInside->set_sensitive(false);
409  m_xTsbEndless->set_sensitive(false);
410  m_xNumFldCount->set_sensitive(true);
411  m_xNumFldCount->set_value(m_xNumFldCount->get_value());
412  }
413  else
414  {
415  m_xTsbStartInside->set_sensitive(true);
416  m_xTsbStopInside->set_sensitive(true);
417  m_xTsbEndless->set_sensitive(true);
418  ClickEndlessHdl_Impl(*m_xTsbEndless);
419  }
420 
421  m_xTsbAuto->set_sensitive(true);
422  ClickAutoHdl_Impl(*m_xTsbAuto);
423 
424  if( eAniKind == SdrTextAniKind::Blink )
425  {
426  m_xBoxDirection->set_sensitive(false);
427  m_xBoxCount->set_sensitive(false);
428  }
429  else
430  {
431  m_xBoxDirection->set_sensitive(true);
432  m_xBoxCount->set_sensitive(true);
433  }
434  }
435  break;
436  }
437 }
438 
440 {
441  if( eAniKind == SdrTextAniKind::Slide )
442  return;
443 
444  TriState eState = m_xTsbEndless->get_state();
445  if( eState != TRISTATE_FALSE )
446  {
447  m_xNumFldCount->set_sensitive(false);
448  m_xNumFldCount->set_text("");
449  }
450  else
451  {
452  m_xNumFldCount->set_sensitive(true);
453  m_xNumFldCount->set_value(m_xNumFldCount->get_value());
454  }
455 }
456 
458 {
459  TriState eState = m_xTsbAuto->get_state();
460  if( eState != TRISTATE_FALSE )
461  {
462  m_xMtrFldDelay->set_sensitive(false);
463  m_xMtrFldDelay->set_text("");
464  }
465  else
466  {
467  m_xMtrFldDelay->set_sensitive(true);
468  m_xMtrFldDelay->set_value(m_xMtrFldDelay->get_value(FieldUnit::NONE), FieldUnit::NONE); //to-do
469  }
470 }
471 
473 {
474  TriState eState = m_xTsbPixel->get_state();
475  if (eState == TRISTATE_TRUE)
476  {
477  int nValue = m_xMtrFldAmount->get_value(FieldUnit::NONE) / 10;
478  m_xMtrFldAmount->set_sensitive(true);
479  m_xMtrFldAmount->set_unit(FieldUnit::CUSTOM);
480  m_xMtrFldAmount->set_digits(0);
481 
482  m_xMtrFldAmount->set_increments(1, 10, FieldUnit::NONE);
483  m_xMtrFldAmount->set_range(1, 100, FieldUnit::NONE);
484 
485  m_xMtrFldAmount->set_value(nValue, FieldUnit::NONE);
486  }
487  else if( eState == TRISTATE_FALSE )
488  {
489  int nValue = m_xMtrFldAmount->get_value(FieldUnit::NONE) * 10;
490  m_xMtrFldAmount->set_sensitive(true);
491  m_xMtrFldAmount->set_unit(eFUnit);
492  m_xMtrFldAmount->set_digits(2);
493 
494  m_xMtrFldAmount->set_increments(10, 100, FieldUnit::NONE);
495  m_xMtrFldAmount->set_range(1, 10000, FieldUnit::NONE);
496 
497  m_xMtrFldAmount->set_value(nValue, FieldUnit::NONE);
498  }
499 }
500 
501 IMPL_LINK(SvxTextAnimationPage, ClickDirectionHdl_Impl, weld::Button&, rBtn, void)
502 {
503  m_xBtnUp->set_active(&rBtn == m_xBtnUp.get());
504  m_xBtnLeft->set_active(&rBtn == m_xBtnLeft.get());
505  m_xBtnRight->set_active(&rBtn == m_xBtnRight.get());
506  m_xBtnDown->set_active(&rBtn == m_xBtnDown.get());
507 }
508 
510 {
511  m_xBtnUp->set_active( nValue == SdrTextAniDirection::Up );
512  m_xBtnLeft->set_active( nValue == SdrTextAniDirection::Left );
513  m_xBtnRight->set_active( nValue == SdrTextAniDirection::Right );
514  m_xBtnDown->set_active( nValue == SdrTextAniDirection::Down );
515 }
516 
518 {
519  SdrTextAniDirection nValue = SdrTextAniDirection::Left;
520 
521  if( m_xBtnUp->get_active() )
522  nValue = SdrTextAniDirection::Up;
523  else if( m_xBtnLeft->get_active() )
524  nValue = SdrTextAniDirection::Left;
525  else if( m_xBtnRight->get_active() )
526  nValue = SdrTextAniDirection::Right;
527  else if( m_xBtnDown->get_active() )
528  nValue = SdrTextAniDirection::Down;
529 
530  return static_cast<sal_uInt16>(nValue);
531 }
532 
533 
534 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
FieldUnit
constexpr TypedWhichId< SdrTextAniStartInsideItem > SDRATTR_TEXT_ANISTARTINSIDE(SDRATTR_MISC_FIRST+16)
size_t GetMarkCount() const
virtual ~SvxTextAnimationPage() override
Definition: textanim.cxx:125
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *)
Definition: textanim.cxx:378
std::unique_ptr< weld::CheckButton > m_xTsbPixel
Definition: textanim.hxx:63
std::string GetValue
static const WhichRangesContainer pRanges
Definition: textanim.hxx:37
std::unique_ptr< weld::ComboBox > m_xLbEffect
Definition: textanim.hxx:48
long Long
SdrTextAniKind eAniKind
Definition: textanim.hxx:39
std::unique_ptr< weld::SpinButton > m_xNumFldCount
Definition: textanim.hxx:61
SdrMark * GetMark(size_t nNum) const
constexpr TypedWhichId< SdrTextAniCountItem > SDRATTR_TEXT_ANICOUNT(SDRATTR_MISC_FIRST+18)
virtual SdrObjKind GetObjIdentifier() const
TRISTATE_TRUE
SdrObjKind
static const SfxPoolItem * GetItem(const SfxItemSet &rSet, sal_uInt16 nSlot, bool bDeep=true)
virtual void PageCreated(const OString &rId, SfxTabPage &rPage) override
Definition: textanim.cxx:56
SdrTextAniKind
FieldUnit GetModuleFieldUnit(const SfxItemSet &rSet)
NONE
virtual MapUnit GetMetric(sal_uInt16 nWhich) const
virtual bool FillItemSet(SfxItemSet *) override
Definition: textanim.cxx:268
std::unique_ptr< weld::ToggleButton > m_xBtnRight
Definition: textanim.hxx:52
const SdrView * pView
Definition: textanim.hxx:97
constexpr TypedWhichId< SdrTextAniDirectionItem > SDRATTR_TEXT_ANIDIRECTION(SDRATTR_MISC_FIRST+15)
TRISTATE_INDET
void SelectDirection(SdrTextAniDirection nValue)
Definition: textanim.cxx:509
SdrObject * GetMarkedSdrObj() const
TriState m_aLeftState
Definition: textanim.hxx:44
virtual void Reset(const SfxItemSet *) override
Definition: textanim.cxx:135
std::unique_ptr< weld::MetricSpinButton > m_xMtrFldAmount
Definition: textanim.hxx:64
SvxTextAnimationPage(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rInAttrs)
Definition: textanim.cxx:84
#define DBG_ASSERT(sCon, aError)
TriState m_aRightState
Definition: textanim.hxx:45
TRISTATE_FALSE
const SdrMarkList & GetMarkedObjectList() const
int GetCoreValue(const weld::MetricSpinButton &rField, MapUnit eUnit)
SvxTextTabDialog(weld::Window *pParent, const SfxItemSet *pAttr, const SdrView *pView)
Definition: textanim.cxx:41
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_LEFTDIST(SDRATTR_MISC_FIRST+4)
std::unique_ptr< weld::CheckButton > m_xTsbStopInside
Definition: textanim.hxx:57
std::unique_ptr< weld::MetricSpinButton > m_xMtrFldDelay
Definition: textanim.hxx:67
sal_uInt16 GetSelectedDirection() const
Definition: textanim.cxx:517
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *)
void SetMetricValue(weld::MetricSpinButton &rField, int nCoreValue, MapUnit eUnit)
const SfxPoolItem & GetDefaultItem(sal_uInt16 nWhich) const
SfxItemPool * GetPool() const
std::unique_ptr< weld::ToggleButton > m_xBtnUp
Definition: textanim.hxx:50
std::unique_ptr< weld::CheckButton > m_xTsbEndless
Definition: textanim.hxx:60
TriState m_aDownState
Definition: textanim.hxx:46
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *)
Definition: textattr.cxx:475
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
std::unique_ptr< weld::ToggleButton > m_xBtnDown
Definition: textanim.hxx:53
IMPL_LINK(SvxTextAnimationPage, ClickDirectionHdl_Impl, weld::Button &, rBtn, void)
Definition: textanim.cxx:501
constexpr TypedWhichId< SdrTextAniStopInsideItem > SDRATTR_TEXT_ANISTOPINSIDE(SDRATTR_MISC_FIRST+17)
constexpr TypedWhichId< SdrTextAniKindItem > SDRATTR_TEXT_ANIKIND(SDRATTR_MISC_FIRST+14)
void AddTabPage(const OString &rName, CreateTabPage pCreateFunc, GetTabPageRanges pRangesFunc)
std::unique_ptr< weld::ToggleButton > m_xBtnLeft
Definition: textanim.hxx:51
SdrTextAniDirection
std::unique_ptr< weld::CheckButton > m_xTsbStartInside
Definition: textanim.hxx:56
constexpr TypedWhichId< SdrTextAniDelayItem > SDRATTR_TEXT_ANIDELAY(SDRATTR_MISC_FIRST+19)
TriState
OBJ_NONE
sal_uInt16 nPos
constexpr TypedWhichId< SdrTextAniAmountItem > SDRATTR_TEXT_ANIAMOUNT(SDRATTR_MISC_FIRST+20)
sal_Int16 nValue
IMPL_LINK_NOARG(SvxTextAnimationPage, SelectEffectHdl_Impl, weld::ComboBox &, void)
Definition: textanim.cxx:383
std::unique_ptr< weld::CheckButton > m_xTsbAuto
Definition: textanim.hxx:66